//做者表測試
//書籍表fetch
Book和Author是多對多關係優化
先放兩張圖作個說明:Jpa底層依賴於hibernate,hibernate默認是有懶加載機制優化的spa
能夠發現:默認是開啓了懶加載的,當咱們要是要到該有的查詢結果的時候,JPA纔會去給咱們查詢hibernate
經過在@ManyToMany註解中配置屬性:fetch = FetchType.EAGER對象
而這個頁面的信息告訴咱們,hibernate是急性加載的,一次性家讀取全部的數據,而後再被使用blog
failed to lazily initialize a collection of role,could not initialize proxy - no Session事務
這個問題主要來源於我測試的時候發現的,沒有添加任何事務,JPA查詢數據後,自動關閉了會話內存
懶加載我也手動關閉,因此當我想要使用數據的時候,會話其實已經關閉了,致使懶加載查詢數據失敗it
懶加載環境:手動給事務,儘可能在事務包裹的時候將數據所有取出來;
懶加載關閉:一次性讀取所有數據,無需理會
ToString()方法引起棧移除
當咱們對對多的時候,想打印一個檢索結果,這個時候若是咱們經過使用lombok的@ToString註解,或者自動生成ToString方法,都會形成棧內存溢出
A對象中有一個List<B> ,而B對象中也有一個List<A>,若是你不切斷一個其中ToString關於集合的打印,這就是一個無線輪迴的過程,就會形成棧移除
應對方法:
看你須要那一邊的數據爲主,若是是A對象的數據爲主,就把B對象的ToString中關於屬性List<A>屬性的打印給幹掉,便可房子無線循環問題
1