前面在使用Hibernate的时候就提及过了懒加载,但没有好好地说明具体的说明究竟是怎么回事…本博文主要讲解懒加载
懒加载就是当使用数据的时候才去获取数据、执行对应的SQL语句…当还没用到数据的时候,就不加载对应的数据!
主要目的就是为了提高Hibernate的性能,提高执行效率!
get: 及时加载,只要调用get方法立刻向数据库查询load:默认使用懒加载,当用到数据的时候才向数据库查询。我们可以在对应的配置文件用通常lazy属性来设置
关闭懒加载:
<class name="IdCard" table="IdCard" lazy="false">lazy有三个属性:
true 使用懒加载false 关闭懒加载extra (在集合数据懒加载时候提升效率)【只有在set、list等集合标签中使用】 在真正使用数据的时候才向数据库发送查询的sql;如果调用集合的size()/isEmpty()方法,只是统计,不真正查询数据!当Session关闭后,就不能使用懒加载了,否则会报出异常
Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session报出了这个异常,我们有4种方法解决:
方式1: 先使用一下数据 dept.getDeptName();方式2:强迫代理对象初始化 Hibernate.initialize(dept);方式3:关闭懒加载 设置lazy=false;方式4: 在使用数据之后,再关闭session!