jpa查詢方便了查詢,但是有時會也會影響性能,有時候會加載深度過深和加載了不需要但非常占用內存的數據。所以此時可以使用實體圖,懶加載或者不加載某些數據。這些數據可以是不同層級上的。
但是最近發現代碼中出現實體圖失效的問題。查詢資料并沒有找到原因。
后排查發現是事務影響到了實體圖的生效。結合查詢的資料https://www.cnblogs.com/ymqj520/p/14046986.html代理會使實體圖失效(按照資料中的處理方式并沒有解決我的問題)。綜合來看應該是事務注解是AOP,是通過代理實現的。導致了實體圖失效。
解決辦法有以下幾種:
1.增加新的實體類,去掉需要的數據,重寫DAO
2.縮小事務范圍,在使用實體圖的查詢放在事務外面
3.抽出實體圖的查詢,增加方法使用NOT_SUPPORTED傳播級別。
綜合評估使用了第三種方案,但是此種方案也有坑存在。
同類中的this調用的方法的傳播級別不生效,要特別注意