标签:
1 package com.it.test; 2 import org.hibernate.SessionFactory; 3 import org.hibernate.Transaction; 4 import org.hibernate.cfg.Configuration; 5 import org.hibernate.classic.Session; 6 import com.it.bean.UserInfo; 7 public class Test2 { 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 //创建SessionFactory 11 SessionFactory sessionfactory = null; 12 //创建session 13 Session session = null; 14 //创建事务 15 Transaction tx = null; 16 try { 17 sessionfactory = new Configuration().configure().buildSessionFactory(); 18 session = sessionfactory.getCurrentSession(); 19 //开启事务 20 tx=session.beginTransaction(); 21 UserInfo u = (UserInfo) session.get(UserInfo.class, "1001"); 22 System.out.println("-------"); 23 //清除缓存,这里如果没有清除缓存,那么控制台就会只输出一次查询,当清除了缓存后就会有输出两次查询语句。这正好说明了缓存的存在。 24 session.evict(u); 25 UserInfo u1 = (UserInfo) session.get(UserInfo.class, "1001"); 26 //提交 27 tx.commit(); 28 } catch (Exception e) { 29 e.printStackTrace(); 30 //事务回滚 31 tx.rollback(); 32 } 33 } 34 }
1 //延迟加载--用的时候才执行 2 UserInfo u = (UserInfo) session.load(UserInfo.class, "1001"); 3 System.out.println("---1----"); 4 System.out.println(u.getUser_name()); 5 //输出结果:查询语句在------1-----后才执行,用到的时候再执行,且如果取得是主属性,就不用查询,因为load里已经给了
1 使用load: //延迟加载--用的时候才执行 2 UserInfo u = (UserInfo) session.load(UserInfo.class, "1001"); 3 System.out.println("---1----"); 4 tx.commit(); 5 //在事务提交之后操作非主属性会抛异常:org.hibernate.LazyInitializationException 6 | System.out.println(u.getUser_name()); | 7 |--------------------------------------------------------------------------------------------------| 8 使用get: //使用get 9 UserInfo u = (UserInfo) session.load(UserInfo.class, "1001"); 10 System.out.println("---1----"); 11 tx.commit(); 12 //在事务提交之后还能操作属性,因为已经得到在之前已经得到了该对象 13 System.out.println(u.getUser_name());
标签:
原文地址:http://www.cnblogs.com/xjqqblogs/p/5913435.html