ん?ん?んー?
http://www.atmarkit.co.jp/fjava/rensai4/troublehacks13/troublehacks13_1.html
三国志オタじゃないので小難しいことは知らない。紳々竜々は数々の戦場を渡り歩いて死ななかった兵(つわもの)だということしか。
ただ、おいらがわかるのはなんかへんだということ。
ソースを見る前にやることがあるんじゃないだろうか?
たとえば、EclipseLinkとToplink EssentialsはJPQLによるSQL発行のログがわかりやすく見れるのが特徴だ。バインドしたパラメータ変数も表示してくれる。OpenJPAもわりとみやすいほう。ちなみにHibernate EntityManagerのログは手っ取り早くないのでログの調整が面倒すぎて嫌い。
でも、そのログを真っ先に見ようとしない。プロファイラやソースを引っ張り出してきてわざと難しく考えてるのかな?
あとは金額計算するというのにメソッドの戻り値がdouble。えー。
それに拡張forが悪いように見える見出しはいかがなものか。これ、ループの中でSQL発行するようにしてるのがいけないだけであってJava5はわるくねーよ。JPAの使い方も最悪なのを選択しているだけだし。
まず単純に考える。JPQLだけでもSQL1本発行にして大幅に高速化は可能。エンティティ単位以外に処理をするならばselect newを使えばよい。JOINだって普通にある。JPA=エンティティしか扱えないと思ってる人も多すぎるような。
そして、フェッチも1行にして検索専用のデータがほしいのならばviewを作ればよいだけ。ネイティブクエリは最後の手段でよい。下手にネイティブクエリ発行されまくってJPAのキャッシュ制御関係が無駄になるのはもったいない。
この人わざと難しくしようとしてるんじゃないかなぁ。最後の結果だけはいいけど、その過程がでたらめすぎる。
あ、doubleなんて金額計算に使ってる時点でよいとはいえないか。
おいらは頭悪いから物事を簡単に考えるようにしている。難しいのは簡単にはならないけど、簡単なものは簡単なままでいいよね。