hibernate class上のlazy策略
hibernate lazyポリシーは、以下において使用できます。
*ラベルから、値を取ることができます。true/false
*ラベルには、値を取ることができます。true/falseには、クラス強化ツールが必要です。
*
*
*
*
- ラベルから、値を取ることができます。true/false/extra
*
lazy概念:このオブジェクトを本当に使う時だけ作成します。hibernateにとって、本当に使っている時にはsqlが発行されます。
hibernateサポートlazyポリシーはsessionオープン状態でのみ有効です。
<class>ラベルのlazy特性は普通の属性にのみ適用されます。
1.実体類
package com.yx.zzg.bo;
public class Group {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.エンティティ系マッピングファイル
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.yx.zzg.bo.Group" table="t_group">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>
</hibernate-mapping>
3.試験類
package com.yx.zzg.test;
import org.hibernate.Session;
import junit.framework.TestCase;
/**
* :
*
* <class> lazy=true,
*
* @author Administrator
*
*/
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());
}
}