Hibernate检索总结和查询方式总结

检索总结

检索策略

优点

缺点

优先考虑使用的场合

立即检索

对应用程序完全透明,不管对象处于持久化状态还是游离状态,应用程序都可以从一个对象导航到关联的对象

(1)select语句多

(2)可能会加载应用程序不需要访问的对象,浪费许多内存空间。

(1)类级别

(2)应用程序需要立即访问的对象

(3)使用了二级缓存

延迟检索

由应用程序决定需要加载哪些对象,可以避免执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并节省内存空间。

应用程序如果希望访问游离状态的代理类实例,必须保证她在持久化状态时已经被初始化。

(1)一对多或者多对多关联

(2)应用程序不需要立即访问或者根本不会访问的对象

              

表连接检索

(1)对应用程序完全透明,不管对象处于持久化状态还是游离状态,都可从一个对象导航到另一个对象。

(2)使用了外连接,select语句少

(1)可能会加载应用程序不需要访问的对象,浪费内存。

(2)复杂的数据库表连接也会影响检索性能。

(1)多对一或一对一关联

(2)需要立即访问的对象

(3)数据库有良好的表连接性能。


Customer Get(int id)

       ReturnSession.load(Customer.class,id);

1.      lazy=false

2.      在Service层获得在页面要上要用到的属性=> 在Service层中确保数据已经


查询方式总结

1.通过OID检索(查询)

       get()立即、如果没有数据返回null

       load()延迟,如果没有数据抛异常。

2.导航对象图检索方式:关联查询

       customer.getOrderSet()

       user.getPost().getDepartment().getDepName();

3.原始sql语句

       SQLQuerysqlQuery = session.createSQLQuery("sql 语句")   --->表,表字段(列)

              sqlQuery.list()查询所有

              sqlQuery.uniqueResult()查询一个

4.HQL,hibernate query language hibernate 查询语言【1】

       Queryquery = session.createQuery("hql语句")  --> 对象,对象属性

5.QBC,query by criteria 纯面对对象查询语言【2】



你可能感兴趣的:(JavaEE,hibernate)