其實N+1呢個問題係每個ORM度都會發生,最簡單解決方法就係索性拆做兩個entity唔再俾ORM去處理佢地既relationship,咁就可以search by parent field從而解決N+1既問題,當然呢個又違反左最初用ORM去令source code easy to use and maintain既理由,其實一個Application完全用ORM唔寫任何Query本身就唔現實,不過全部都淨係寫Query又好花時間同難main,要係當中搵到個平衡就係system design或者寫code果個既水平
其實N+1呢個問題係每個ORM度都會發生,最簡單解決方法就係索性拆做兩個entity唔再俾ORM去處理佢地既relationship,咁就可以search by parent field從而解決N+1既問題,當然呢個又違反左最初用ORM去令source code easy to use and maintain既理由,其實一個Application完全用ORM唔寫任何Query本身就唔現實,不過全部都淨係寫Query又好花時間同難main,要係當中搵到個平衡就係system design或者寫code果個既水平
真係受益良多,基本都在用mybatis,所以好少去了解jpa hibernate,又學左野!
其實仲有些更常犯的錯誤,例如developer無理解過jpa的life cycle, 成日以為自己無call .save ()就唔會save db的data,然後在d get或search function裡拿住db的entity 用setXXX
但其實spring加jpa在這些get search function 不call save也會自己update db除非有另外做一些特別的setup
這種低級錯誤到發現有bug要debug真的搵住傻,仲要差不多每次開新project總有junior developer會犯
係呀係呀!呢個都係好常見嘅錯!寫稿嘅時候醒唔起tim!
好正
希望可以講多d springboot
謝謝分享
...掂......................我决定follow呢个频道
Request query 慢通常是 DB modeling 時設計得衰⋯
Totally agree, Indexing
用 Spring + Hibernate 本身就係最大錯誤, 但係為咗搵工被迫要學...
佢出世嘅時候本身係有佢嘅好處嘅,不過過咗咁多年,佢嘅歷史性任務已經完咗
應該轉咩?
甩jpa?
mybatis?
@@john33john33 你可以試下用 JOOQ。 database 係另外自己起而唔係靠 hibernate 自動 generate (例如用 flyway)。呢種方式係喺 existing database 上,JOOQ reverse engineer 個 database 俾哂所有 database 對應的 pojo 同簡單的 DAO 你 (例如會俾哂 fetchBySthSth 你),然後你亦可以利用佢 query builder 整一 d 好 customized 的 query。