Hibernate 懒加载


懒加载:(lazy)

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

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

    lazy 值

true   使用懒加载

false   关闭懒加载

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

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

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

Hibernate 懒加载


Hibernate 懒加载

id值在方法中直接进行输入,所以获取Id值时并没有执行任何sql语句进行加载,而是在分割线后进行加载。

Hibernate 懒加载

Hibernate 懒加载

Hibernate 懒加载


lazy="extra" 属性。

Hibernate 懒加载

Hibernate 懒加载

Hibernate 懒加载



 getload方法区别?

  get: 及时加载,只要调用get方法立刻向数据库查询

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

 懒加载异常

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

   如果session关闭后,使用懒加载数据报错:

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

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

 方式1: 先使用一下数据

   dept.getDeptName();

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

Hibernate.initialize(dept);

方式3:关闭懒加载

设置lazy=false;

方式4: 在使用数据之后,再关闭session!