首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate范例简析-hibernate_lazy_for_class

2012-10-05 
hibernate实例简析-hibernate_lazy_for_classhibernate lazy策略可以使用在:* class标签上,可以取值:tru

hibernate实例简析-hibernate_lazy_for_class
hibernate lazy策略可以使用在:
* <class>标签上,可以取值:true/false
* <property>标签上,可以取值:true/false需要类增强工具
* <set><list>标签上,可以取值:true/false/extra
* <one-to-one><many-to-one>单端关联上,可以取值:false/proxy/noproxy

lazy概念:只有真正使用该对象时,才会创建,对于hibernate而言,正真使用的时候才会发出sql

hibernate支持lazy策略只有在session打开状态下有效

<class>标签上的lazy特性只对普通属性起作用

/**
* 运行本单元测试的条件:
*
* 设置<class>标签上的lazy=true,也就是默认配置**/
//不会发出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 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());

热点排行