hibernate class上のlazy策略


hibernate lazyポリシーは、以下において使用できます。
*ラベルから、値を取ることができます。true/false
*ラベルには、値を取ることができます。true/falseには、クラス強化ツールが必要です。
*ラベルから、値を取ることができます。true/false/extra
*片端関連で、値を取ることができます。false/proxy/noproxy
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());
	}	
	
}