隨筆-95  評(píng)論-31  文章-10  trackbacks-0
          1: DAO層方法入?yún)ageable,那么JPQL無法用left join fetch,因?yàn)槟J(rèn)會(huì)進(jìn)行select count(),而count()函數(shù)后面無法帶xxx join fetch,必須去掉fetch才可以,否則拋出以下異常
              query specified join fetching, but the owner of the fetched association was not present in the select list
              

          2: Dao層方法入?yún)⒉粠ageable,那么JQPL可以用left join fetch,這個(gè)其實(shí)也好理解,fetch本來就是解決1+N的問題,一次性抓取所有,如果帶上分頁,那么與之就沖突了,
              所以也可這樣理解,帶分頁的OneToMany(默認(rèn)是LAZY),迭代many的時(shí)候,必定會(huì)出現(xiàn)多個(gè)sql語句,也就意味著要容忍這種性能問題,因?yàn)楫吘箮Я朔猪摚?1+N)查詢滿足條件的1有若干個(gè)(帶分頁),
              那么每個(gè)1進(jìn)行迭代many的時(shí)候都會(huì)出現(xiàn)多個(gè)sql,要容忍,其實(shí)也可以不容忍,想其它辦法!       

          2: 對(duì)于@OneToMany,不需要出現(xiàn)@JoinColumn注解,而且要帶上mappedBy="",表示當(dāng)前One方不維護(hù)外鍵關(guān)系,對(duì)應(yīng)數(shù)據(jù)庫表就是多的一方加外鍵,在many方加上@ManyToOne
              @JoinColumn注解外鍵,其中optional默認(rèn)為true,表示該外鍵值可以為空,具體看源碼,這個(gè)有時(shí)候在自動(dòng)生成表的時(shí)候會(huì)有用


          綜上所述:用data jpa開發(fā)起來是挺方便的(建表、幾乎不寫sql、領(lǐng)域模型建的好,查詢基本沒問題),不過性能始終有待提升,需要不斷的優(yōu)化,最后還是盡量能用mybatis就用mybatis吧。。。




          posted on 2017-12-18 22:32 朔望魔刃 閱讀(287) 評(píng)論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 会泽县| 安泽县| 贵溪市| 凤台县| 永德县| 绥滨县| 桃江县| 桂东县| 扶沟县| 嵊州市| 长宁区| 江阴市| 辉南县| 富宁县| 蓬莱市| 铁力市| 柏乡县| 陕西省| 永顺县| 涿鹿县| 秦安县| 吉安县| 天水市| 金寨县| 安多县| 二连浩特市| 瑞安市| 黄平县| 扬中市| 随州市| 南充市| 碌曲县| 天气| 江西省| 江川县| 玛多县| 岳池县| 禹城市| 当涂县| 时尚| 彭阳县|