1 package cn.lonecloud.test.crud; 2 3 import org.hibernate.HibernateException; 4 import org.hibernate.Session; 5 import org.hibernate.SessionFactory; 6 import org.hibernate.Transaction; 7 import org.hibernate.cfg.Configuration; 8 import org.junit.Before; 9 import org.junit.Test; 10 11 import cn.lonecloud.domain.Customer; 12 13 public class GetAndLoad { 14 15 private Session session; 16 17 private SessionFactory buildSessionFactory; 18 19 public SessionFactory getBuildSessionFactory() { 20 return buildSessionFactory; 21 } 22 23 public void setBuildSessionFactory(SessionFactory buildSessionFactory) { 24 this.buildSessionFactory = buildSessionFactory; 25 } 26 27 public void setSession(Session session) { 28 this.session = session; 29 } 30 31 @Before 32 public void getSession() { 33 Configuration cfg = new Configuration().configure(); 34 setBuildSessionFactory(cfg.buildSessionFactory()); 35 session= buildSessionFactory.openSession(); 36 } 37 @Test 38 public void getTest(){ 39 Transaction transaction = null; 40 try { 41 transaction = session.beginTransaction();//建立session 42 //get預設為非懶載入模式進行的不管設定設定懶載入 43 //get方法首先查詢session快取,沒有的話查詢二級快取,最後查詢資料庫; 44 //反而load方法建立時首先查詢session快取,沒有就建立代理,實際使用資料時才查詢二級快取和資料庫。 45 Customer customer = (Customer) session.get(Customer.class, "2c90ab8157cda51a0157cda51b330000"); 46 System.out.println(customer.getId()); 47 customer.getOrders(); 48 transaction.commit();//提交事務 49 } catch (HibernateException e) { 50 if (transaction!=null) { 51 transaction.rollback();//事務回滾 52 } 53 e.printStackTrace(); 54 }finally{ 55 if (session!=null&&session.isOpen()) { 56 session.close();//關閉session 57 } 58 } 59 } 60 @Test 61 public void loadTest(){ 62 Transaction transaction = null; 63 try { 64 transaction = session.beginTransaction();//建立session 65 //get預設為非懶載入模式進行的不管設定設定懶載入 66 //get方法首先查詢session快取,沒有的話查詢二級快取,最後查詢資料庫; 67 //反而load方法建立時首先查詢session快取,沒有就建立代理,實際使用資料時才查詢二級快取和資料庫。 68 Customer customer = (Customer) session.load(Customer.class, "2c90ab8157cda51a0157cda51b330000"); 69 System.out.println(customer.getId()); 70 customer.getOrders(); 71 transaction.commit();//提交事務 72 } catch (HibernateException e) { 73 if (transaction!=null) { 74 transaction.rollback();//事務回滾 75 } 76 e.printStackTrace(); 77 }finally{ 78 if (session!=null&&session.isOpen()) { 79 session.close();//關閉session 80 } 81 } 82 } 83 }
//get預設為非懶載入模式進行的不管設定設定懶載入
//get方法首先查詢session快取,沒有的話查詢二級快取,最後查詢資料庫;
//反而load方法建立時首先查詢session快取,沒有就建立代理,實際使用資料時才查詢二級快取和資料庫。
具體:
http://blog.csdn.net/javaloveiphone/article/details/8184941