引言,hibernate的get方法,只能利用主键查询,所以需要HQL完成复杂查询
SQL查的是表,而HSQL查询的事对象
Query q = session.createQuery(HQL);
from Person
from User user where user.name = :name
from User user where user.name = :name and user.birday < :birday
例子:
static void query01(String name){ Session s = null; try{ s = HibernateUtil.getSession(); String hql01 = "from User as user where user.name=?"; Query query = s.createQuery(hql01); query.setString(0,name); List<User> userList = query.list(); for(User userItem:userList){ System.out.println(userItem.getName()); } }finally{ if(s!=null) s.close(); } }
与jdbc的却别是HQL没有select,而且当setString时是从零开始的,取值的方法也有些诡异是query.list();
Criteria
Criteria是一种更面相对象的查询方式,criteria的查询方式
static void cri(String name){ Session s = null; try{ s = HibernateUtil.getSession(); Criteria c = s.createCriteria(User.class); c.add(Restrictions.eq("name", name));//加入一个约束条件 List<User> userList = c.list(); for(User userItem:userList){ System.out.println(userItem.getName()); } }finally{ if(s!=null) s.close(); } }
怀着激动的心情,使用阔别4年的hibernte完成CRUD。
package dao; import domain.User; public interface UserDao { public void saveUser(User user); public void removeUser(User user); public void updateUser(User user); public User getUserById(int id); public User getUserByName(String name); }
package dao.impl; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Restrictions; import Util.HibernateUtils; import dao.UserDao; import domain.User; public class UserDaoHibernateImpl implements UserDao { @Override public void saveUser(User user) { Session session = null; Transaction transaction = null; try{ session = HibernateUtils.getSession(); transaction = session.beginTransaction(); session.save(user); transaction.commit(); }catch(Exception e){ e.printStackTrace(); transaction.rollback(); }finally{ session.close(); } } @Override public void removeUser(User user) { Session session = null; Transaction transaction = null; try{ session = HibernateUtils.getSession(); transaction = session.beginTransaction(); session.delete(user); transaction.commit(); }catch(Exception e){ e.printStackTrace(); transaction.rollback(); }finally{ session.close(); } } @Override public void updateUser(User user) { Session session = null; Transaction transaction = null; try{ session = HibernateUtils.getSession(); transaction = session.beginTransaction(); session.update(user); transaction.commit(); }catch(Exception e){ e.printStackTrace(); transaction.rollback(); }finally{ session.close(); } } @Override public User getUserById(int id) { Session session = null; try{ session = HibernateUtils.getSession(); User user = (User)session.get(User.class, id); return user; }finally{ session.close(); } } @Override public User getUserByName(String name) { Session session = null; try{ session = HibernateUtils.getSession(); Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.eq("name","test05")); User user = (User)criteria.uniqueResult(); return user; }finally{ session.close(); } } }
package domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="domain"> <class name="User"> <id name="id"> <generator class="native"/> </id> <property name="name" unique="true"/> <property name="birthday"/> </class> </hibernate-mapping>
package Util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public final class HibernateUtils { private static SessionFactory sessionFactory; private HibernateUtils(){ } static{ Configuration cfg = new Configuration(); cfg.configure(); SessionFactory sf = cfg.buildSessionFactory(); } public static SessionFactory getSessionFactory(){ return sessionFactory; } public static Session getSession(){ return sessionFactory.openSession(); } }
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.hbm2ddl.auto">validate</property> <property name="show_sql">true</property> <mapping resource="domain/User.hbm.xml"/> </session-factory> </hibernate-configuration>
相关推荐
【描述】"J2EE系列讲座之Hibernate.lesson1.rar" 暗示这是一个教学课程或教程的第一部分,专注于介绍Hibernate的基础知识和核心概念。在这个压缩包中,可能包含了课件、源代码示例、讲解视频或者PDF文档等,帮助初学...
它还支持 Criteria 查询、HQL(Hibernate Query Language)等高级查询方式,简化了数据库操作。 Spring框架则是一个全面的企业级应用开发框架,它的核心特性是依赖注入和面向切面编程。Spring可以帮助开发者管理...
Hibernate提供了丰富的查询语言HQL(Hibernate Query Language)和Criteria API,使得数据库查询更加灵活和高效。 **Struts与Hibernate整合**在J2EE开发中具有重要意义。这种整合使得开发者可以在Struts的MVC框架下...
《浪磬J2EE第一期 Hibernate专题 第六讲 检索方式》 在J2EE开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本讲主要聚焦于Hibernate的检索方式,通过深入探讨和实践,我们将...
Hibernate支持多种数据库,具有丰富的查询API,包括HQL(Hibernate Query Language)和Criteria API,使得数据库查询更加灵活和便捷。 Spring框架是一个全面的后端开发框架,包含了依赖注入(DI)、面向切面编程...
6. **查询(Querying)**: Hibernate提供HQL(Hibernate Query Language)和 Criteria 查询,它们是面向对象的查询语言,比直接写SQL更符合面向对象思维。 **三、Hibernate使用流程** 1. **配置**: 配置Hibernate的...
【J2EE与Hibernate简介】 在Java企业级应用开发领域,J2EE(Java 2 Platform, Enterprise Edition)是一个标准的平台,它提供了一个统一的框架来构建分布式、多层的应用程序。J2EE涵盖了服务器端组件模型、数据库...
Hibernate支持自动持久化、查询语言HQL和 Criteria API,使得数据库操作更为简便。 在这个"OnlineGoodsShop"项目中,你可以学习到以下关键知识点: 1. **Struts配置**:理解struts-config.xml文件的结构,包括...
在这个"在飞实习学J2EE之路:12.9.23 Hibernate的基本流程(登录)"的主题中,我们将深入探讨Hibernate在处理登录场景时的关键步骤和技术要点。 1. **Hibernate简介** Hibernate是一个对象关系映射(ORM)框架,它...
它提供了查询语言HQL(Hibernate Query Language)和Criteria API,以及强大的缓存机制,提高了应用性能。 3. **CSS(层叠样式表)** CSS是用于控制网页表现的语言,负责定义页面布局、颜色、字体等视觉效果。在...
它还提供了Criteria查询、HQL(Hibernate Query Language)等高级查询方式,增强了数据操作的灵活性。 **Spring** 框架是Java企业级应用的核心,它不仅仅是一个简单的MVC框架,而是提供了全面的解决方案,包括依赖...
它支持多种数据库,如MySQL、Oracle、PostgreSQL等,并提供了强大的查询语言HQL(Hibernate Query Language)以及 Criteria API,使得数据操作更为便捷。 Spring框架则是一个全面的企业级应用开发框架,它包含了...
4. **查询实现**:Hibernate提供了多种查询方式,包括HQL(Hibernate Query Language)和Criteria API。HQL类似于SQL,但更面向对象。Criteria API提供了一种类型安全的方式来构造查询,它更适合于动态查询。在描述...
Hibernate支持HQL(Hibernate Query Language)和 Criteria API,它们都是面向对象的查询方式,比直接写SQL更加直观和安全。此外,Hibernate 4.2进一步加强了JPQL(Java Persistence Query Language)的支持。 **7....
书中会详细介绍Hibernate的实体映射、Session管理、查询语言HQL以及Criteria API的使用,让读者能够熟练掌握数据持久化的技巧。 最后,Spring框架是现代Java应用的基石,它提供了一个全面的应用程序开发框架,包括...
本压缩包中的"jar包1"包含了Struts2和Hibernate两个关键框架的库文件,它们是J2EE开发中的重要组成部分。 **Struts2** 是一个开源的MVC(Model-View-Controller)框架,它基于Action和Interceptor的概念,用于构建...
7. **Hibernate查询**:HQL(Hibernate Query Language)和 Criteria 查询,以及动态SQL的使用。 8. **事务管理**:了解Hibernate的Transaction API,以及如何在Service层处理事务。 9. **整合Struts与Hibernate**:...
Java Web API,包括J2EE、Struts2、Hibernate和Spring,是开发企业级Web应用程序的核心框架和技术。这些技术在构建高效、可扩展且易于维护的Web应用中扮演着重要角色。 1. **J2EE (Java 2 Platform, Enterprise ...
3. **Criteria和HQL**:除了SQL,Hibernate提供了Criteria API和HQL(Hibernate Query Language)进行查询,这两种方式更符合面向对象的思维。 4. **缓存机制**:Hibernate支持一级缓存(Session缓存)和二级缓存,...
在J2EE项目开发中,Hibernate是一个非常重要的持久层框架,它简化了数据库与Java对象之间的交互,使得开发者可以更加专注于业务逻辑,而非繁琐的SQL语句编写。本实训主要围绕Hibernate框架技术展开,旨在帮助你深入...