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

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

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

    溫故知新:hibernate_02對象狀態

    hibernate對象含有三種狀態,瞬時,持久和離線。簡而言之就是,瞬時對象和hibernate session沒關系,持久對象就是和hibernate session有關系,并且當前事物還沒有提交,持久對象的所有變化都會反映到數據庫中,最后,離線對象就是和hiberante session有過關系,但是事物已經提交了,離線對象已經脫離了hibernate 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     //省略相關工具類和實體類 
     13     @Test
     14     public void testTransien() {
     15         Session session = null;
     16         try {
     17             session = HibernateUtil.openSession();
     18             session.beginTransaction();
     19             
     20             //對hibernate而言,stu1對象和session沒有任何關聯,所以該對象不會反映到數據庫中
     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             //當一個對象變為持久對象之后便被session所管理,在事務提交之前
     45             //持久對象若有變更,則會更新
     46             Student stu1 = new Student();
     47             stu1.setName("xiaoxiaoming");
     48             stu1.setGrade("六");
     49             session.save(stu1);
     50             //此處如果發送多條save,update,均沒有意義,save命令發出之后,只會發送一條insert指令
     51             //在最后事物提交之前,stu1會和session中的stu1緩存對象進行對比,將最后的結果反映到數據庫中
     52             //session.save(stu1);
     53             //session.update(stu1);
     54             
     55             //對象變為持久對象之后,對象本身所做的變更會反映到數據庫中去,這里會發送update語句更新數據
     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             //某對象在數據庫中存在記錄,但是在session沒有被管理,那么他就不會和數據庫
     79             //進行狀態同步
     80             Student stud = (Student) session.load(Student.class, 9);
     81             session.clear();
     82             //但是,如果沒有清空session,那么stud對象就在session的管轄之內,stud對象的變更
     83             //都會以update語句反映到數據庫中
     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

    導航

    統計

    公告

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

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品亚洲аv无码播放| 国产片免费在线观看| 亚洲阿v天堂在线| 久久久久久久国产免费看| 亚洲狠狠爱综合影院婷婷| 日韩免费高清一级毛片| 亚洲成AⅤ人影院在线观看| 日韩在线视频免费| 亚洲香蕉网久久综合影视| 美女网站在线观看视频免费的| AV在线亚洲男人的天堂| 999zyz**站免费毛片| 亚洲嫩模在线观看| 国产精品永久免费10000| 亚洲已满18点击进入在线观看| 拨牐拨牐x8免费| 国产精品亚洲а∨无码播放不卡 | 国产美女被遭强高潮免费网站 | 国产成人无码精品久久久久免费| 亚洲成AV人网址| 两个人看的www免费| 亚洲精品视频专区| 麻豆精品国产免费观看| 一级做a爰片久久免费| 亚洲精品自产拍在线观看动漫| 免费观看黄色的网站| 综合一区自拍亚洲综合图区 | 免费观看无遮挡www的视频| 亚洲人成电影网站免费| 亚洲欧洲国产成人综合在线观看| 国产午夜无码精品免费看| 亚洲婷婷在线视频| 日韩亚洲精品福利| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲欧美熟妇综合久久久久| 国产成人毛片亚洲精品| 国产妇乱子伦视频免费| 午夜免费国产体验区免费的| 精品日韩亚洲AV无码| 免费精品国产自产拍观看| 无码人妻久久一区二区三区免费 |