一、概述
Hibernate有五种检索方式。
1.导航对象图检索方式
根据已经加载的对象,导航到其他对象。
Order order = (Order)session.get(Order.class,1); Customer customer = order.getCustomer();
2.OID检索方式
根据对象的OID来检索对象。
session.get(Customer.class,1); session.load(Customer.class,1);get和load的区别
(1)get()使用的是立即检索策略。
load()使用的延迟检索策略,即load()方法返回的是只有一个id属性的代理对象,只有真正使用对象时,才会发出Sql语句。
(2)get()如果查询的记录不存在返回null。
load()如果查询不存在的记录则会抛异常,ObjectNotFoundException。
3.HQL检索方式
使用面向对象的HQL查询语言。
4.QBC检索方式
使用QBC(Query By Criteria)API来检索对象
5.本地SQL检索
使用本地数据库的SQL查询语句。
session.createSQLQuery(String sql);
二、HQL语句
1.概述
HQL(Hibernate Query Language)是面向对象的查询,查询的是对象和对象的属性,是Hibernate特有的。
2.简单查询
3.简单条件查询
通过HQL检索一个类的实例时,如果查询语句的其他地方需要引用它,应该为这个类指定一个别名。
4.排序查询
结果:
Customer [cid=3, cname=王五]
Customer [cid=2, cname=李四]
Customer [cid=1, cname=张三]