Java⇔RDBのMapping-Frameworkを語るスレ Vol.4
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドの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はずすとコストが下がるからサクサクと結果が かえるようになる(こともあるよね)
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4503日前に更新/245 KB
担当:undef