溫故知新: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 都較瘦 閱讀(81) 評論(0)  編輯  收藏 所屬分類: ORMFramework

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

          導航

          統計

          公告

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

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 准格尔旗| 威信县| 镇平县| 苏尼特右旗| 江北区| 石台县| 基隆市| 乌什县| 高碑店市| 南康市| 龙南县| 三原县| 股票| 定襄县| 库尔勒市| 信丰县| 宣城市| 平定县| 收藏| 称多县| 蕲春县| 万年县| 麻阳| 海晏县| 婺源县| 广灵县| 绥阳县| 文成县| 英超| 翁源县| 五常市| 崇左市| 平泉县| 利津县| 阿合奇县| 体育| 闻喜县| 铜山县| 南漳县| 象州县| 噶尔县|