关于懒加载

来源:互联网 发布:jquery load js不执行 编辑:程序博客网 时间:2024/06/05 03:13

默认的情况下,lazy="true",fetch="select"。

所谓懒加载,就是不访问数据库,不返回实际的对象,而是返回一个代理对象。在实际使用时,才会访问数据库。

比如,Employee emp=session.get(Employee.class,id);

而Employee中有一个多对一的关联,关联到Department。那么System.out.println(emp.getDepartment().getClass());可以看到,得到的并不是Dempartment对象,而是一个命名比较奇怪的Department子类对象(这个继承类是由Hibernate自动产生的,故domain都不能够为final型)。如果在Session关闭后,调用emp.getDeparment().getId()会报LazyInitializedException异常。在默认情况下,只能够在Session未关闭时使用。

又或者,加上一句Hibernate.initialize(emp.getDepartment());初始化对象,那么,也就可以在Session关闭后使用了。