国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 解決JPA @OneToMany及懶加載無效的問題

解決JPA @OneToMany及懶加載無效的問題

2022-02-20 12:12Robot6540 Java教程

這篇文章主要介紹了解決JPA @OneToMany及懶加載無效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

 

JPA @OneToMany及懶加載無效

@OneToOne @ManyToMany使用不做過多解釋,重點解決“懶加載無效問題”。

示例:

 

@OneToMany

teacher 和 student是一對多關系

解決JPA @OneToMany及懶加載無效的問題 解決JPA @OneToMany及懶加載無效的問題

解決JPA @OneToMany及懶加載無效的問題

只需要在studentList上使用@OneToMany注解,對應的參數為 懶加載、級聯操作、子表外鍵

解決JPA @OneToMany及懶加載無效的問題

解決JPA @OneToMany及懶加載無效的問題

我為了驗證懶加載是否生效,在debug模式下發現懶加載并沒有生效。在正常模式下,返回到頁面也是有studentList的數據。于是開始排坑,逐漸懷疑人生。。

直到看到了某國際友人說的這么一句話。

It seems to be a debugging artifact.

At debugging time, because the transaction is still open, the watched lazy loaded entity properties will be loaded at the breakpoint evaluation time.

于是在application.properties中加上spring.jpa.show-sql=true,打開執行的SQL。

debug下,執行到29行,共執行了以下兩句SQL:

Hibernate: select teacher0_.id as id1_1_0_, teacher0_.age as age2_1_0_, teacher0_.name as name3_1_0_ from teacher teacher0_ where teacher0_.id=?
Hibernate: select studentlis0_.teacher_id as teacher_4_0_0_, studentlis0_.id as id1_0_0_, studentlis0_.id as id1_0_1_, studentlis0_.addr as addr2_0_1_, studentlis0_.name as name3_0_1_, studentlis0_.teacher_id as teacher_4_0_1_ from student studentlis0_ where studentlis0_.teacher_id=?

開始只查詢了teacher表,緊接著進行了關聯查詢,結合上面那句話猜測可能是debug導致的。而在正常模式下啟動,也是兩條SQL,猜測可能是返回前端時,序列化自動調用了getStudentList()方法,導致執行了第二條SQL。

于是新建TeacherDto.class

解決JPA @OneToMany及懶加載無效的問題

并在controller中return teacherDto,不直接返回teacher。

解決JPA @OneToMany及懶加載無效的問題

在正常模式下啟動,果然只有一條SQL,沒有進行級聯查詢。

Hibernate: select teacher0_.id as id1_1_0_, teacher0_.age as age2_1_0_, teacher0_.name as name3_1_0_ from teacher teacher0_ where teacher0_.id=?

至此踩坑結束……

 

小結一下吧

在使用@OneToOne、@OneToMany、@ManyToMany時,只需要加上參數fetch = FetchType.LAZY即可。

在debug模式下,會自動進行級聯查詢,導致懶加載無效,可能是idea方便開發人員調試,故意這樣設置的。

在接口返回時,避免直接返回entity,可返回Dto或Vo。

 

實現JPA的懶加載和無外鍵

在網上找了很多jpa的懶加載,要不就是抓取策略,要不就隨便加個fetch=FetchType.LAZY

其實jpa實現懶加載非常簡單,其實和mybatis是一樣的,就是不要調用對應屬性的get方法就可以了

 

例如

很多接口輸出對象時都會用 BeanUtils.copyProperties()將實體轉為dto輸出,這時候使用它的重載方法copyProperties(Object source, Object target, String… ignoreProperties)就可以實現懶加載了

代碼如下

public class NoticeRecord {
    @OneToMany(fetch=FetchType.LAZY)
    @JoinColumn(name = "noticeId",foreignKey = @ForeignKey(name = "null"))
    private List<NoticeSendeeRecord> noticeSendeeRecords;
}

 

轉換時使用

這個重載方法的作用就是轉換是忽略noticeRecord中noticeSendeeRecords屬性

BeanUtils.copyProperties(noticeRecord,noticeRecordDTO,"noticeSendeeRecords");

這樣就實現jpa的懶加載了,檢查輸出sql語句,也只有查詢NoticeRecord 的語句,沒有查詢NoticeSendeeRecord的語句

而不讓jpa產生外鍵使用 foreignKey = @ForeignKey(name = “null”) 就可以了

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/R_o_b_o_t_/article/details/115400514

延伸 · 閱讀

精彩推薦
  • Java教程對Java中JSON解析器的一些見解

    對Java中JSON解析器的一些見解

    這篇文章主要是對Java中JSON解析器的一些見解。需要的朋友可以過來參考下,希望對大家有所幫助 ...

    java教程網4072019-10-23
  • Java教程Java編程實現排他鎖代碼詳解

    Java編程實現排他鎖代碼詳解

    這篇文章主要介紹了Java編程實現排他鎖的相關內容,敘述了實現此代碼鎖所需要的功能,以及作者的解決方案,然后向大家分享了設計源碼,需要的朋友可...

    jacin19122021-01-19
  • Java教程Java實現郵箱發送功能實例(阿里云郵箱推送)

    Java實現郵箱發送功能實例(阿里云郵箱推送)

    這篇文章主要給大家介紹了關于Java實現郵箱發送功能的相關資料,利用阿里云郵箱推送,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一...

    bitQian3092020-09-21
  • Java教程java字符串中${}或者{}等的占位符替換工具類

    java字符串中${}或者{}等的占位符替換工具類

    今天小編就為大家分享一篇關于java字符串中${}或者{}等的占位符替換工具類,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友...

    lhever_12462021-06-21
  • Java教程Java生成隨機時間的簡單隨機算法

    Java生成隨機時間的簡單隨機算法

    今天小編就為大家分享一篇關于Java生成隨機時間的簡單隨機算法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小...

    希爾伯特10332021-06-27
  • Java教程Java Swing實現掃雷小游戲

    Java Swing實現掃雷小游戲

    這篇文章主要為大家詳細介紹了Java Swing實現掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    TOM_YIJIAN6982021-05-12
  • Java教程Java JDK 二分法 分析demo(推薦)

    Java JDK 二分法 分析demo(推薦)

    下面小編就為大家帶來一篇Java JDK 二分法 分析demo(推薦)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    Java教程網3092020-12-04
  • Java教程使用IntelliJ IDEA查看類的繼承關系圖形

    使用IntelliJ IDEA查看類的繼承關系圖形

    最近正好也沒什么可忙的,就回過頭來鼓搗過去的知識點,到Servlet部分時,以前學習的時候硬是把從上到下的繼承關系和接口實現記得亂七八糟。 這次利...

    胖胖胖胖虎阿5162020-10-21
主站蜘蛛池模板: 亚洲一区二区三区高清 | 成人精品| 一区二区日韩精品 | 亚洲精品久久久久久久久久久 | 亚洲综合色自拍一区 | 一级在线 | 国产精品美女视频 | 天天综合天天做天天综合 | 天天碰天天操 | 国产精品尤物 | 欧美日韩精品在线观看 | 最好的2019中文大全在线观看 | 亚洲情在线 | 欧美大片免费观看 | 日韩中文字幕在线观看视频 | 国产视频久久久久久久 | 国产精品原创巨作av | 亚洲精品乱码久久久久久花季 | 久操视频免费在线观看 | 四虎永久免费影视 | 久久久久久久成人 | 牛牛电影国产一区二区 | 欧美乱大交xxxxx春色视频 | 欧美视频一二三区 | 四虎影院最新地址 | 国产一级黄片毛片 | 成人免费在线小视频 | 免费久久精品 | 欧美日韩精品久久久 | 中国一级特黄毛片大片 | 久久久精品网站 | 亚洲免费观看在线视频 | 色播av| 国产高清精品在线 | 一级a性色生活片久久毛片 国产精品久久久久久久久久免费看 | 久久久精品网 | 午夜视频| 亚洲高清视频在线 | 成人午夜精品 | 伊人精品影院 | 特黄视频|