默認情況下,Spring Boot 在視圖模式中使用開放會話。
這是否意味著每次使用@Transactional 注釋的方法都使用在請求開始時創建的物體管理器或每次創建一個新的物體管理器?
uj5u.com熱心網友回復:
一個事務,除非 withREQUIRES_NEW將重用現有的執行緒系結 EntityManager或Session(取決于您是使用 JPA 還是普通的 Hibernate)。視圖中的打開會話將在請求開始時打開并系結一個。
所以它將重用當前執行緒系結的一個。
對于普通的 Hibernate,您可以檢查SpringSessionContextclass。對于 JPA,這有點隱藏在代理中,但您可以檢查EntityManagerFactoryUtilsclass。
uj5u.com熱心網友回復:
@Transactional 默認需要一個事務,所以它會盡可能重用一個已經運行的事務,或者創建一個新的事務。
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html#propagation--
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/394528.html
