<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫故知新:hibernate_02對象狀態(tài)

    hibernate對象含有三種狀態(tài),瞬時,持久和離線。簡而言之就是,瞬時對象和hibernate session沒關(guān)系,持久對象就是和hibernate session有關(guān)系,并且當前事物還沒有提交,持久對象的所有變化都會反映到數(shù)據(jù)庫中,最后,離線對象就是和hiberante session有過關(guān)系,但是事物已經(jīng)提交了,離線對象已經(jīng)脫離了hibernate session的管理,自身的狀態(tài)不會反映到數(shù)據(jù)庫中。下面通過幾個測試案例感受一下。
      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     //省略相關(guān)工具類和實體類 
     13     @Test
     14     public void testTransien() {
     15         Session session = null;
     16         try {
     17             session = HibernateUtil.openSession();
     18             session.beginTransaction();
     19             
     20             //對hibernate而言,stu1對象和session沒有任何關(guān)聯(lián),所以該對象不會反映到數(shù)據(jù)庫中
     21             Student stu1 = new Student();
     22             stu1.setName("小明");
     23             stu1.setGrade("一");
     24             
     25             session.getTransaction().commit();
     26             
     27         } catch (Exception e) {
     28             if (session != null) {
     29                 session.getTransaction().rollback();
     30             }
     31         } finally{
     32             if (session != null) {
     33                 session.close();
     34             }
     35         }
     36     }
     37     
     38     @Test
     39     public void testPersistent() {
     40         Session session = null;
     41         try {
     42             session = HibernateUtil.openSession();
     43             session.beginTransaction();
     44             //當一個對象變?yōu)槌志脤ο笾蟊惚籹ession所管理,在事務(wù)提交之前
     45             //持久對象若有變更,則會更新
     46             Student stu1 = new Student();
     47             stu1.setName("xiaoxiaoming");
     48             stu1.setGrade("六");
     49             session.save(stu1);
     50             //此處如果發(fā)送多條save,update,均沒有意義,save命令發(fā)出之后,只會發(fā)送一條insert指令
     51             //在最后事物提交之前,stu1會和session中的stu1緩存對象進行對比,將最后的結(jié)果反映到數(shù)據(jù)庫中
     52             //session.save(stu1);
     53             //session.update(stu1);
     54             
     55             //對象變?yōu)槌志脤ο笾螅瑢ο蟊旧硭龅淖兏鼤从车綌?shù)據(jù)庫中去,這里會發(fā)送update語句更新數(shù)據(jù)
     56             stu1.setName("dadaMing");
     57             
     58             session.getTransaction().commit();
     59             
     60         } catch (Exception e) {
     61             if (session != null) {
     62                 session.getTransaction().rollback();
     63             }
     64         } finally{
     65             if (session != null) {
     66                 session.close();
     67             }
     68         }
     69     }
     70     
     71     @Test
     72     public void testDetach() {
     73         Session session = null;
     74         try {
     75             session = HibernateUtil.openSession();
     76             session.beginTransaction();
     77             
     78             //某對象在數(shù)據(jù)庫中存在記錄,但是在session沒有被管理,那么他就不會和數(shù)據(jù)庫
     79             //進行狀態(tài)同步
     80             Student stud = (Student) session.load(Student.class, 9);
     81             session.clear();
     82             //但是,如果沒有清空session,那么stud對象就在session的管轄之內(nèi),stud對象的變更
     83             //都會以update語句反映到數(shù)據(jù)庫中
     84             stud.setName("newName");            
     85             session.getTransaction().commit();
     86             
     87         } catch (Exception e) {
     88             if (session != null) {
     89                 session.getTransaction().rollback();
     90             }
     91         } finally{
     92             if (session != null) {
     93                 session.close();
     94             }
     95         }
     96     }
     97     
     98 }
     99     
    100 

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

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統(tǒng)計

    公告

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

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品无码日韩国产不卡av| 亚洲成a人片在线看| 一区二区三区免费看| 四虎亚洲国产成人久久精品| 亚洲爆乳无码专区www| 四虎免费久久影院| 国产午夜亚洲精品不卡免下载| 国产精品另类激情久久久免费| 99亚洲乱人伦aⅴ精品| 亚洲国产精品尤物YW在线观看| 四虎成人精品国产永久免费无码| 免费看小12萝裸体视频国产| 另类图片亚洲校园小说区| 精品国产日韩亚洲一区| 99久久免费国产特黄| 亚洲国产美国国产综合一区二区| 日韩人妻一区二区三区免费 | 久久青青草原亚洲AV无码麻豆| a毛片视频免费观看影院| 亚洲首页在线观看| 国产精品美女午夜爽爽爽免费| 国产精品成人亚洲| 亚洲日韩一页精品发布| 精品无码人妻一区二区免费蜜桃| 色婷五月综激情亚洲综合| 国产免费AV片无码永久免费| 一区二区3区免费视频| 久久精品国产亚洲AV无码麻豆| 成年丰满熟妇午夜免费视频| 国产免费伦精品一区二区三区| 久久精品国产亚洲av高清漫画| 精品熟女少妇AV免费观看| 人妻无码中文字幕免费视频蜜桃| 亚洲激情中文字幕| 日本高清色本免费现在观看| 国产性生大片免费观看性| 中文字幕 亚洲 有码 在线 | 免费人成网上在线观看| 亚洲av无码国产精品色午夜字幕| 免费精品人在线二线三线区别 | 美女被暴羞羞免费视频|