溫故知新:hibernate_03延遲加載

          延遲加載作為一種提升效率的機制,利弊共存,優點是,在查詢中,某些對象可能在查詢之后,不會使用,比如User對象關聯了Department對象,在只需要使用User對象的時候,如果不獲取Deaprtment的相關信息,則不會查詢Deparment對象的內容。但是弊端也顯而易見,延遲加載在session關閉之后會失效,如果延遲加載使用不當,很容出現無法取得對象的情況。
           1 package demo;
           2 
           3 import org.hibernate.Session;
           4 import org.junit.Test;
           5 
           6 import domain.Student;
           7 import util.HibernateUtil;
           8 
           9 public class App 
          10 {
          11     //省略實體類和相關配置
          12     @Test
          13     public void lazyLoad() {
          14         Session session = null;
          15         try {
          16             session = HibernateUtil.openSession();
          17             session.beginTransaction();
          18             
          19             //s對象在load完畢之后是一個托管對象,只有一個id屬性,如果不使用該對象,則不會進行查詢
          20             //但是,不論是否能夠查詢到,s對象不是空,是一個含有id的代理對象
          21             Student s = (Student) session.load(Student.class, 99);
          22             //System.out.println(s.getId());
          23             
          24             //get方法不存在延遲加載機制,會直接查詢,但是查詢不到會返回null
          25             //而不是一個代理對象
          26             Student s1 = (Student) session.get(Student.class, 5);
          27             System.out.println(s1);
          28             
          29             //取得s2對象之后,若不進一步取得s2所包含的department屬性,則不會進一步發送sql去
          30             //取得department的信息
          31             Student s2 = (Student) session.load(Student.class, 10);
          32             //System.out.println(s2.getDepartment().getName());
          33             
          34             session.getTransaction().commit();
          35 
          36         } catch (Exception e) {
          37             if (session != null) {
          38                 session.getTransaction().rollback();
          39             }
          40         } finally{
          41             if (session != null) {
          42                 session.close();
          43             }
          44         }
          45     }
          46     
          47 }
          48     
          49 

          posted on 2015-01-20 14:57 都較瘦 閱讀(82) 評論(0)  編輯  收藏 所屬分類: ORMFramework

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          公告

          博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 图片| 石河子市| 滨海县| 建阳市| 临江市| 邻水| 布尔津县| 固阳县| 蕉岭县| 昭平县| 灌云县| 鄢陵县| 湘潭县| 淮北市| 仙游县| 沧州市| 库尔勒市| 武清区| 调兵山市| 武邑县| 聂荣县| 英山县| 梨树县| 那坡县| 长岛县| 林周县| 盖州市| 洛隆县| 文登市| 泸水县| 泗阳县| 玉林市| 珲春市| 蕉岭县| 蒲城县| 正定县| 湾仔区| 宁武县| 桦甸市| 永济市| 阿拉善左旗|