簡體   English   中英

EntityManager和休眠會話

[英]EntityManager and hibernate Session

我在SpringMVC應用程序中使用休眠JPA。 我正在用這段代碼對其進行初始化

@PersistenceContext
    protected EntityManager entityManager;

現在,這個entityManager可以繼續使用我的應用程序。 hibernate的EntityManager實現包裝了一個hibernate會話。 您可以根據需要解開包裝。 當我們使用沒有JPA的純休眠模式時。 我們打開會議以完成工作,然后關閉會議。 如果EntityManager在打開和關閉時在后台使用了hibernate的會話。 如果在整個應用程序生命周期中只進行一次會話,是否不會因為實體沒有自動驅逐而造成問題? 它可能導致內存不足錯誤?

我將嘗試回答每個問題(基於我的經驗和期望),但是我敢肯定,這實際上取決於您是使用JTA事務還是使用UserTransactions(又稱為資源本地事務):

如果EntityManager在打開和關閉時在后台使用了hibernate的會話?

對於EntityManager的每個實例,都會打開一個新的休眠會話。 如果您使用JTA事務,則在事務關閉時(第一個服務bean方法返回時),entityManager也將關閉。

如果它在整個應用程序生命周期中都保持單一會話狀態,那么會不會因為沒有自動驅逐實體而造成問題? 它可能導致內存不足錯誤?

它不保留單個休眠會話。 如果進行了配置,它將有一個可重用的連接池,但是對於每個新創建的bean,它將生成一個新的實體管理器,並在其后面有一個新的Hibernate會話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM