世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2005年05月11日

Hibernateによるmiddle-out開発

HibernateによるO/Rマッピング構築をしようと思うと、3つアプローチがあるらしい。

  • Javaソースを元に、XDocletとか使ってマッピングファイルとデータベース定義を生成する。top-down方式
  • データベース定義を元に、Middlegenとか使ってマッピングファイルとJavaソースを生成する。bottom-up方式
  • マッピングファイルを元に、・hibernate-extensionsに入っているAntタスクを使ってデータベース定義やJavaソースを生成する。middle-out方式。

各方式の検討は忘れる前にメモろう Hibernate @ blog.keitap.comが結構わかり易いと思った。新規開発の場合、middle-outが楽かな、というのがいろいろ試した結果の結論。

保守段階で新規にhibernateを導入しようと思うと当然bottom-upになるんだけど。新規開発の場合、DDLはどうせ、あとで物理設計的に修正しなくちゃいけないわけだし、DDLとマッピングファイルのどちらが書きやすいかといえばマッピングファイルだやな。

マッピングファイルを書くのとXDocletマークアップするのは手間は大して変わらないのだけど、問題は新規開発の場合、top-downでやろうとするとマークアップすべきPOJO、それも値オブジェクトみたいな単調なコーディングをひたすらやらなくてはならないってことだ。その点、middle-outなら値オブジェクトやら、複合キークラスやらは全部Antタスクが作ってくれる。DDLもとりあえずテストするには問題ないレベルのものが生成される。後工程でデータベース設計をもう一度見直して適当にViewとか作ればよろしい。

世間ではPOJOに対するXDocletマークアップの紹介が何かと目に付くし、EJB3.0も似た路線でいくとか聞くけれど、でもこれってあんまりいい方法じゃない気がする。2つほど小さなプロジェクトでXDoclet方式を使ってみての感想。

既存のPOJOに後から永続化機能を追加するならマッピングファイルを直接書けばいい。元のソースに触らない分いろいろ柔軟だ。既存のデータベース処理をHiberante化するならmiddlegenを使う。新規開発ならmiddle-outだ。XDocletの利点がよくわからない。生成されるPOJOが単純な値クラスじゃ困る場合でもgenerated-classメタタグを使ったり、HibernateSynchronizerを使ったりしてgeneration-gapすればよい話だし。あえて言うなら、後付けで永続化機能を追加する場合で且つマッピング方法の変更可能性が低い場合、XDocletならデータ構造についての情報が分散しないってことぐらいか。

トラックバック

http://yugui.jp/articles/184/ping

現在のところトラックバックはありません

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system