1. 程式人生 > >Spring Data JPA使用getOne方法報錯:Method threw 'org.hibernate.LazyInitializationException' exception. Cannot evaluate

Spring Data JPA使用getOne方法報錯:Method threw 'org.hibernate.LazyInitializationException' exception. Cannot evaluate

com tps 對象 vlad 解釋 連接 method 需要 至少

getOne是懶加載,需要增加這個配置: spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true,但這種方式不太友好,建議不要使用。

解釋:https://vladmihalcea.com/2016...

每次初始化一個實體的關聯就會創建一個臨時的session來加載,每個臨時的session都會獲取一個臨時的數據庫連接,開啟一個新的事物。這就導致對底層連接池壓力很大,而且事物日誌也會被每次flush.
設想一下:假如我們查詢了一個分頁list每次查出1000條,這個實體有三個lazy關聯對象,那麽,恭喜你,你至少需要創建3000個臨時session+connection+transaction.

參考:

https://segmentfault.com/q/1010000012794754

https://segmentfault.com/a/1190000009150966(以上部分內容轉自此篇文章)

Spring Data JPA使用getOne方法報錯:Method threw 'org.hibernate.LazyInitializationException' exception. Cannot evaluate