Hibernate懒加载

  • 面试题 getload方法区别?面试

get: 及时加载,只要调用get方法马上向数据库查询sql

load:默认使用懒加载,当用到数据的时候才向数据库查询。 数据库

 

  • 懒加载:(lazy)session

概念:当用到数据的时候才向数据库查询,这就是hibernate的懒加载特性。spa

                 目的:提供程序执行效率!hibernate

  • lazy 代理

        true   使用懒加载对象

        false   关闭懒加载get

        extra   (在集合数据懒加载时候提高效率)it

在真正使用数据的时候才向数据库发送查询的sql

若是调用集合的size()/isEmpty()方法,只是统计,不真正查询数据!

                        

 

  • 懒加载异常

  • Session关闭后,不能使用懒加载数据!

  • 若是session关闭后,使用懒加载数据报错:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

                 如何解决session关闭后不能使用懒加载数据的问题?

                          // 方式1 先使用一下数据

                 //dept.getDeptName();

                // 方式2:强迫代理对象初始化

                 Hibernate.initialize(dept);

                // 方式3:关闭懒加载

                         设置lazy=false;

                 // 方式4 在使用数据以后,再关闭session

相关文章
相关标签/搜索