hibernateのN+1問題について
hibernateを業務で使うことになりました。
やっほう!!
なんて思っていたら、早速N+1問題にぶつかった。
テーブルを結合してとってきて欲しいので、リレーションをアノテーションで記述してみたよ。
でも、流れているSQLは、一テーブル毎に検索するSQLだった。一生懸命、親レコード一つに付き、子レコードを検索するSQLを発行していたよ。
じゃあってんで、fetchを追加したら、検索結果の件数が子レコードの総数になったよ。
そうじゃないんだ。欲しいのは親レコード-子レコードの結果なんだ。だから検索結果の件数として欲しいのは、親レコードの件数なんだ。親レコードから処理を始めたいんだ。
mappingの戦略(?)といったものが指定できるんであれば、そうしたい。