其实在默认的时候不写 就是懒加载的呢,只是些了更明确一些 laze=true/false 只有这两个值,如果设置为false的话,就是load方法仍然会执行sql语句的,load和 lazy配合使用的
实例
1 设置为true
<?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.lyq.model.Medicine" table="tb_medicine_cache" lazy="true">
<id name="id">
<generator class="native"/>
</id>
<property name="name" not-null="true" length="200" />
<property name="price" not-null="true"/>
<property name="factoryAdd" length="200"/>
<property name="description" type="text"/>
</class>
</hibernate-mapping>
2 测试
package com.lyq.util;
import org.hibernate.Session;
import com.lyq.model.Medicine;
/**
* Lazy测试
* @author Li Yong Qiang
*/
public class Test {
public static void main(String[] args) {
Session session = null; //声明Session对象
//开启第一个session
try {
//获取Session
session = HibernateUtil.getSession();
//开启事物
session.beginTransaction();
System.out.println("第一次查询:");
//查询药品
Medicine medicine = (Medicine)session.load(Medicine.class, new Integer(1));
//提交事物
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
//出错将回滚事物
session.getTransaction().rollback();
}finally{
//关闭Session对象
HibernateUtil.closeSession(session);
}
//开启第二个session
try {
//获取Session
session = HibernateUtil.getSession();
//开启事物
session.beginTransaction();
System.out.println("============================================");
System.out.println("第二次查询:");
//查询药品
Medicine medicine = (Medicine)session.load(Medicine.class, new Integer(1));
//输出药品名称
System.out.println("药品名称:" + medicine.getName());
//提交事物
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
//出错将回滚事物
session.getTransaction().rollback();
}finally{
//关闭Session对象
HibernateUtil.closeSession(session);
}
}
}
结果
第一次查询:
============================================
第二次查询:
Hibernate:
select
medicine0_.id as id0_0_,
medicine0_.name as name0_0_,
medicine0_.price as price0_0_,
medicine0_.factoryAdd as factoryAdd0_0_,
medicine0_.description as descript5_0_0_
from
tb_medicine_cache medicine0_
where
medicine0_.id=?
药品名称:2