[英]JDBC prepared statement vs hibernate session transaction readonly operations
[英]Hibernate Session vs Transaction
我對 Hibernate 中的會話和事務的概念有點困惑。 據我了解,Hibernate 使用會話(持久性上下文),它基本上是需要在數據庫中持久化、刪除或其他任何實體的緩存。 會話封裝了事務,所以我啟動一個會話,然后創建一個事務。 關閉事務后,持久性上下文中的所有內容都會刷新到數據庫。如果我關閉會話,也會發生同樣的事情。
為什么我兩者都需要? 我可以在不創建交易的情況下做同樣的事情嗎?
首先,您可以在同一個會話中打開多個事務。
現在,刷新不一定與事務提交有關。 當您save()
一個實體時 - 如果您使用身份生成策略,它將被刷新。 當您select
某些內容時 - 會話也將刷新(如果刷新模式為自動)。 您甚至可以告訴 Hibernate 在事務提交之前不要刷新(刷新模式 MANUAL)。
事務只對 ACID 負責,它是一個 DB 特性。 而Session負責管理實體,生成SQL,處理事件。 這是Java的事情。
PS:會話不僅僅是一個“緩存”。 這也是一種跟蹤更改了哪些實體的方法。 所以這不僅僅是一個優化技巧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.