日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【SSH】——Hibernate三种状态之间的转化

發布時間:2025/4/16 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SSH】——Hibernate三种状态之间的转化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hibernate的三種狀態為:transient、persistent和detached。對這三種狀態的理解可以結合Session緩存,在Session緩存中的狀態為persistent,另外兩種不在Session中。
另一種說法是,Hibernate有四種狀態,增加一個removed狀態。在一個session實例的緩存中刪除時會轉化到該狀態。

  • transient
    通過new()創建,不在session的緩存中,也與數據庫無關的狀態。處在該狀態的對象稱為臨時對象。

  • persistent
    對象在session緩存區中,數據庫中有數據與之對應。

  • detached
    俗稱游離狀態,即存在于數據庫中,但session中已經不存在該對象。

  • 上圖是其三種狀態之間的轉化,下面我們通過實例來具體看一下。

    1、開始——>transient

    private static SessionFactory factory;/*** 完成sessionFactory的初始化*/static{try{//讀取hibernate.cfg.xml配置文件Configuration cfg=new Configuration().configure();//建立sessionFactory,可訪問mysqlfactory=cfg.buildSessionFactory();}catch(Exception e){e.printStackTrace();}finally{}}//獲得sessionpublic static Session getSession(){return factory.openSession();}

    獲取session對象

    //獲取session對象session = HibernateUtil.getSession();// 開啟ts = session.beginTransaction();// Transient狀態user = new User();user.setName("張三");user.setPassword("1233");user.setCreateTime(new Date());user.setExpireTime(new Date());

    執行new()方法之后,對象進入transient狀態。對照上圖也可以看出,如果接下來不對其進行操作,該對象最終會被垃圾回收,不再是transient狀態。
    那么接下來,我們對其執行簡單的save()操作。

    2、transient——>persistent

    // 執行過后,被session管理 Persistentsession.save(user);//修改用戶姓名user.setName("張四");//commit會把數據與數據庫進行同步。 ts.commit();

    3、persistent——>detached

    關閉session,對象狀態由持久化轉為游離態。

    if(session!=null){if(session.isOpen()){session.close();}}

    4、detached——>persistent

    這里,我們通過update()方法實現。

    //再次修改用戶名user.setName("張五");//獲取session對象,與上面類似 session = HibernateUtil.getSession();// 開啟ts = session.beginTransaction();// 將session管理// 變為persistent狀態,清理緩存時同步數據庫。session.update(user);session.getTransaction().commit();

    了解Hibernate中對象的三種狀態,可以幫助我們對其進行靈活的操作。也可以幫助我們理解他與session緩存、數據庫之間的關聯。

    轉載于:https://www.cnblogs.com/saixing/p/6730246.html

    總結

    以上是生活随笔為你收集整理的【SSH】——Hibernate三种状态之间的转化的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。