0
我正試圖保存()事務邊界之外的實體。從互聯網文章,我讀,它會立即發出數據庫調用。但在我的例子中,如果我寫入flush(),那麼只有它是在進行數據庫調用。save()是否會在休眠狀態下調用db調用?
從我的例子中,我只學會txn.commit()或沖洗()使DB調用。保存()不會進行數據庫調用。
save()是否會調用db調用?
我使用postgresql db,hibernate 4.3.1版本。
我正試圖保存()事務邊界之外的實體。從互聯網文章,我讀,它會立即發出數據庫調用。但在我的例子中,如果我寫入flush(),那麼只有它是在進行數據庫調用。save()是否會在休眠狀態下調用db調用?
從我的例子中,我只學會txn.commit()或沖洗()使DB調用。保存()不會進行數據庫調用。
save()是否會調用db調用?
我使用postgresql db,hibernate 4.3.1版本。
save()將給定實體綁定到會話,生成它的ID並返回它。
鏈接的文章錯誤地假定save()總是立即插入實體,但這是錯誤的。它在它們的特定情況下是這樣做的,因爲它們使用IDENTITY生成器,並且爲具有這種生成器的實體生成ID的唯一方法是在數據庫中插入一行並取回由數據庫生成的ID。
如果您使用序列生成器,則只會看到正在執行的查詢以獲取下一個序列值(除非它在內存中具有可用ID的緩存)。如果您使用UUID生成器,則不會看到任何正在執行的查詢。
所以當hibernate實際插入實體時,如果沒有使用IDENTITY?是否需要刷新/提交或hibernate如何知道它是「到達數據庫的時間」? –
默認情況下,flush是在必要時由Hibernate自動完成的。在執行前最多也是在執行查詢之前,其結果可能取決於數據庫中新實體的存在。 –