Java⇔RDBのMapping-Frameworkを語るスレ Vol.4at TECHJava⇔RDBのMapping-Frameworkを語るスレ Vol.4 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト150:149 06/04/13 18:40:57 続き でも問題はあるのだよ。 【問題1】 遅延ロードは沢山のSQLを出力するから嫌いだ。 じつは、ふつうに遅延ロードをやると確かに遅延しない場合に比べて遅ーいばあいがあるね。 でも、以下のありがちな前提条件と、mappingの設定方法が合わさると、はやいのだ。 【前提条件】 1.次の10件みたいなページング機能が要求されている。 そしてその実装はHQLではなく、汎用的にView層で行っている。 2.HQLまたはSQLでJoinするとえらく複雑でOracleのほうでコストがすごい。 【対処】 前提1の対処 ページングがあるってことは、遅延ロードは10件分しかしなくていいよね。 でも遅延しなけりゃデータ数分Javaのメモリまでは展開されるんだからデータ件数によって は遅延のほうがはやくなる。 それでも1件1件SQLが発生するのに抵抗がある人は、Hibernate-mappingの<Set>タグの Attributeで「batch-size」ってのがあるんで、ここを20とかにすれば20行一挙に取得するSQLが 発行される。これは便利。 前提2の対処 遅延なしでOracleのコストがかかっている場合は、SQLを単純になるように分割したら 分割したほうが速くなる ほら、共有プールのサイズとかあんまとれなくて、SQLであるコスト超えたら突然すごく 遅くなる場合あるじゃん。そんなときはjoinはずすとコストが下がるからサクサクと結果が かえるようになる(こともあるよね) 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch