Hibernate查询学习小结
Hibernate的查询方式
在Hibernate中共提供了5种查询方式
1.通过OID查询:
OID检索:根据对象的OID(主键)进行检索
1.使用get方法
User user=session.get(User.class,1)
2.使用load方法
User user=sesson.loda(User.class,1)
2.对象导航检索:
对象导航检索:Hibernate根据一个已经查询到的对象,获得其关联的对象的一种查询方式。
3.HQL检索:
HQL查询:Hibernate Query Language,Hibernate的查询语言,是一种面向对象的方式的查询语言,语法类似SQL。通过session.createQuery(hql),用于接收一个HQL进行查询方式。
步骤:
-
-
调用Session对象的createQuery方法创建查询对象,在方法中传入HQL语句
-
如果HQL语句有参数(占位符),那么通过查询对象的setParameter或者方法设置参数
-
调用查询对象的方法执行查询:list(),uniqueResult()
4.QBC检索:
QBC查询:Query by Criteria,使用Criteria接口,Criteria是完全面向对象的接口,通过该接口可以不考虑数据库底层的实现,或者sql的编写,由Hibernate进行操作
(Hibernate5.2以前)使用步骤
-
获取Session对象
-
通过Session对象获取Criteria对象
-
通过Restrictions的静态方法完成对Criteria的查询对象的创建
-
将条件对象添加到Criteria对象中,使用add方法
-
执行Criteria对象的list()或uniqueResult()
5.SQL检索:
通过使用SQLquery接口使用,该接口可以接受一个sql语句,然后调用list()或者uniqueResult()进行查询
Session session =HibernateUtils.openSession();//自己写的工具类获取session SQLQuery sqlQuery=session.CreateSQLQuery("select * from user"); sqlQuery.addEntity(User.class); List<User> list=sqlQuery.list();
SQLQuery查询结果不会直接封装到实体对象中,需要手动添加代码
//将返回的数据对象封装到对象 sqlQuery.addEntity(User.class)
浙公网安备 33010602011771号