隨筆-95  評論-31  文章-10  trackbacks-0
          1: DAO層方法入?yún)ageable,那么JPQL無法用left join fetch,因為默認會進行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,這個其實也好理解,fetch本來就是解決1+N的問題,一次性抓取所有,如果帶上分頁,那么與之就沖突了,
              所以也可這樣理解,帶分頁的OneToMany(默認是LAZY),迭代many的時候,必定會出現(xiàn)多個sql語句,也就意味著要容忍這種性能問題,因為畢竟帶了分頁,(1+N)查詢滿足條件的1有若干個(帶分頁),
              那么每個1進行迭代many的時候都會出現(xiàn)多個sql,要容忍,其實也可以不容忍,想其它辦法!       

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


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




          posted on 2017-12-18 22:32 朔望魔刃 閱讀(292) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 马关县| 衡东县| 攀枝花市| 平陆县| 郓城县| 怀仁县| 玉屏| 浦江县| 全州县| 鹿泉市| 新干县| 霸州市| 赣榆县| 河曲县| 苏尼特右旗| 富宁县| 长寿区| 眉山市| 揭东县| 郴州市| 梁平县| 安图县| 闻喜县| 贺兰县| 奉节县| 盘山县| 伊吾县| 平远县| 和龙市| 雅安市| 德钦县| 砀山县| 白沙| 永兴县| 墨脱县| 开阳县| 道真| 托克逊县| 丹阳市| 阜平县| 额尔古纳市|