Hibernate學習(四)get和Load比較

lonecloud發表於2016-10-16
 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

相關文章