今日の作業のまとめ。
- Torque
org.apache.torque.util.LargeSelect は使えそうで使えない。
このクラスは select で一度に取ってくるには大量のため、
ページ毎に表示するような場合に用いられる。
言ってみれば、Google の検索結果が複数ページになるようなイメージで捉えてもらえれば良いと思う。
しかし、この LargeSelect は一つのオブジェクトを使い回す仕様になっており、
x ページ目がリクエストされたので LargeSelect を新しく作って、
x ページ目を取得という方法は考慮されていない。(頑張ったら出来そうだが頑張る気がない)
ならばどうするか。javax.servlet.http.HttpSession に入れれば良い。
だが、しかし、LargeSelect は java.lang.Runnable なのだ。Thread なのだ。
「Thread は使ってはいけない」という Servlet プログラムの決まりを破るのは行儀がよろしくない。
更に、Torque を使った場合、普通 OM クラスと呼ばれる、データベースのテーブルにマッピングされた
クラスのオブジェクトが 1 カラム毎に生成されるのだが、LargeSelect はどの OM クラスを
使えばいいのかがわからないので、village の
com.workingdogs.village.Record を返す。これが問題なのだ。
Struts の bean:write タグで
Record#getValue(String key)
というインターフェースのものをどうやって取ってくるのかがわからない。
Record#getValue(int index)
で取ってくる方法はわかるのだが、データベースに依存するかもしれない。(しないかもしれない)
データベースに依存したくないから Torque を使っているのに、動くからいいやなどと言ってしまったら
本末転倒だ。
以上の理由から LargeSelect は使えそうだが使えないクラスと私の中で認定されました。
ただ、私が LargeSelect の使い方を知らないだけかもしれないが。
なんか、Torque を使ってて思うのだが、Torque は安易に Thread を使い過ぎてるように感じる。
データベースを使う場合って、やっぱり Java だと J2EE での利用が多いわけで、
J2EE だと「Thread は使うな」という風潮なので、Torque はどうなのかなぁと思ってみたり。
- Struts
[2003-11-28-1] の対策として struts-config.xml を一つにしてみた。
すると、ディレクトリで区別することができなくなったので、
Tomcat の Form 認証が使えなくなった。
_| ̄|○