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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JPA / Hibernate实体状态转换的初学者指南

發布時間:2023/12/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JPA / Hibernate实体状态转换的初学者指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

Hibernate將開發人員的思維方式從SQL語句轉移到實體狀態轉換。 一旦實體由Hibernate主動管理,所有更改將自動傳播到數據庫。

操作域模型實體(及其關聯)比編寫和維護SQL語句容易得多。 如果沒有ORM工具,則添加新列需要修改所有關聯的INSERT / UPDATE語句。

但是,Hibernate也不是靈丹妙藥。 Hibernate并沒有使我們擺脫擔心實際執行的SQL語句的麻煩。 控制Hibernate并不像人們想象的那么簡單,并且必須檢查 Hibernate代表我們執行的所有SQL語句 。

實體陳述

如前所述,Hibernate監視當前連接的實體。 但是,要使實體成為受管理實體,它必須處于正確的實體狀態。

首先,我們必須定義所有實體狀態:

  • 新建(臨時):從未與Hibernate會話(也稱為持久性上下文)相關聯且未映射到任何數據庫表行的新創建的對象被視為處于“ 新建(臨時)”狀態。需要顯式調用EntityManager#persist方法或使用可傳遞持久性機制。
  • 持久性(托管): 持久性實體已與數據庫表行關聯,并由當前運行的持久性上下文進行管理。 對此類實體所做的任何更改都將被檢測到,并傳播到數據庫(在會話刷新期間)。 使用Hibernate,我們不再需要執行INSERT / UPDATE / DELETE語句。 Hibernate采用“事務后寫”工作方式,并且在當前Session刷新時間的最后一個負責時刻同步更改。
  • 分離:關閉當前正在運行的持久性上下文后,所有先前管理的實體都將分離 。 不再跟蹤連續的更改,也不會自動進行數據庫同步。要將分離的實體與活動的Hibernate會話相關聯,可以選擇以下選項之一:
    • 重新連接
  • 刪除:盡管JPA要求只允許刪除管理實體 ,但是Hibernate也可以刪除分離的實體 (但只能通過Session#delete方法調用)。刪除的實體僅計劃刪除,并且將執行實際的數據庫DELETE語句在會話刷新期間。

實體狀態轉換

要更改一個實體狀態,我們需要使用以下實體管理接口之一:

  • 實體管理器
  • 屆會

這些接口定義了實體狀態轉換操作,我們必須顯式調用以將實體狀態更改通知給Hibernate。 在刷新時,實體狀態轉換會具體化為數據庫SQL語句(INSERT / UPDATE / DELETE)。

翻譯自: https://www.javacodegeeks.com/2014/07/a-beginners-guide-to-jpahibernate-entity-state-transitions.html

總結

以上是生活随笔為你收集整理的JPA / Hibernate实体状态转换的初学者指南的全部內容,希望文章能夠幫你解決所遇到的問題。

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