ダークサイドJava
Struts + Spring + Hibernateが魔の組み合わせと言われるのがようやくわかってきました。
とりあえずメモ。
- Strutsは実質FormにString型のフィールドしか使えない。
- Formからモデルに変換が必要。
ドメインモデルにするとFormとの変換が超大変。
→オブジェクト/フォームマッピング(O/F Mapping)と名づけよう。
- 上記理由からテーブルとモデルは1対1にしたほうが安全。
Formとモデルを変換してるとHibernateの管理下に置けないため毎回Hibernateのセッションクリアが必要(Hibernateのセッション管理下にモデルを置かない)。
→宣言的トランザクションで問題が起きないか調査が必要。あとタイムスタンプの管理をきっちりやらないとLockエラーが出るので注意。
前のプロジェクトでもStrutsを使いましたがそのときはテーブルとモデルは1対1にしてさらにすべての属性をStringにしました。
業務ロジックが複雑になってかなり痛い目みましたが…。同じ目には会いたくないと思うもすでに遅いような気もしますが。
今のところStruts1.X系を使う理由がどこにも見つからないです。
どうしてもStruts使うならHibernateはやめたほうがいいと思います。