Hibernate学习24 -- 延迟加载1 -- 类对象Lazy特征
2009-12-07 12:18
357 查看
hibernate支持lazy策略只有在session打开状态下有效。
hibernate lazy策略可以使用在:
* 标签上,可以取值:true/false
* 标签上,可以取值:true/false需要类增强工具
* 标签上,可以取值:true/false/extra
* 单端关联上,可以取值:false/proxy/noproxy
代码实现:
Group.java
Group.hbm.xml
测试代码:
hibernate lazy策略可以使用在:
* 标签上,可以取值:true/false
* 标签上,可以取值:true/false需要类增强工具
* 标签上,可以取值:true/false/extra
* 单端关联上,可以取值:false/proxy/noproxy
1.1. 标签上lazy特性
lazy概念:只有真正使用该对象时,才会创建,对于hibernate而言,正真使用的时候才会发出sql。标签上的lazy特性只对普通属性起作用代码实现:
Group.java
public class Group { private int id; private String name;
Group.hbm.xml
id"> class="native"/> name"/>
测试代码:
/** * 运行本单元测试的条件: * * 设置标签上的lazy=true,也就是默认配置 */ public class ClassLazyTest extends TestCase { public void testLoad1() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); //不会发出sql Group group = (Group)session.load(Group.class, 1); //不会发出sql System.out.println("group.id=" + group.getId()); //会发出sql System.out.println("group.name=" + group.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } public void testLoad2() { Session session = null; Group group = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); group = (Group)session.load(Group.class, 1); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } //不能正确输出,抛出LazyInitializationException 异常, //因为session已经关闭 //hibernate支持lazy策略只有在session打开状态下有效 System.out.println("group.name=" + group.getName()); } }
相关文章推荐
- Hibernate学习25 -- 延迟加载2 -- 集合Lazy特征
- Hibernate学习26 -- 延迟加载3 -- 关联lazy特征
- hibernate延迟加载lazy的原理,以及为什么session关闭会报错
- SSH与SSM学习之hibernate24——关联级别加载策略之属性关联加载策略
- Hibernate学习--hibernate延迟加载原理(动态代理)
- CGlib之LazyLoader实现延迟加载对象
- 关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )
- Hibernate中的代理对象和延迟加载的问题
- hibernate lazy——延迟加载
- Hibernate之lazy延迟加载
- hibernate 之《lazy》延迟加载和inverse
- hibernate延迟加载的传说级错误org.hibernate.LazyInitializationException: could not initialize proxy - no Sessio
- 关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )
- hibernate延迟加载的传说级错误org.hibernate.LazyInitializationException: could not initialize proxy - no Session
- [转]PO和VO、关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )
- hibernate3 动态控制 延迟加载 lazy=false
- hibernate 延迟加载(Lazy)问题spring下解决方法
- 关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )
- Hibernate学习之抓取策略与懒(延迟)加载
- org.hibernate.LazyInitializationException【延迟加载异常】