以前、Java Persistence APIのチュートリアルを紹介しました。NetBeansがあれば、(仕組みこそ違えど)Railsのような手軽さでWeb+DBアプリが作れることを実感できます。
まだの方は、ぜひ一度やってみてください。
このチュートリアルで使ってる技術と実装は、次のようになってます。
| 技術構成 | 実装(すべて Sun Java 9.0 に同梱) |
| JSF Webコンテナ | Sun Java 9.0 [GlassFish] |
| Java Persistence API | TopLink (Essential) |
| データベース | Java DB [Derby] |
| 技術構成 | 実装(変更前) | 実装(変更後) |
| JSF | GlassFish | Tomcat 5.5-20 |
| JPA | TopLink | Hibernate EntityManager |
| DB | Derby | PostgreSQL8.1 |
■1.各ソフトウェアをインストールする
(割愛します。上表のリンクからどうぞ。)
tomcat/common/lib に、hibernate EntityManagerとJDBCのライブラリをコピーしておきます。その他、hibernateのREADMEを読んで、必要に応じて追加します。
■2.NetBeansにJDBCをインポートする
RuntimeタブのDatabases-Driversを右クリックで「New Driver」。PostgreSQL JDBCをインポートします。
■3.NetBeansで新しいWebプロジェクトを作る
「New Project」で「Web Application」。
Serverの「Manage」をして、Tomcat5.5-20を追加します。
「Source Level to Java1.4」はチェックを外します(Java5に対応しなければならないので)。これをしないと、アノテーションを使う機能を利用できません。
■4.接続ユニット(Persistence Unit)を作る
デフォルトではTopLinkしか選べませんが、「New Persistence Library」で、次のJARをインポートするとHibernateが使えるようになります。
「New Database Connection」で、先にインポートしたPostgreSQLが選択できるようになっているので、接続URLを入力します。
2006/12/15追記:
生成されたpersistence.xmlに、手作業で以下を追加します。
<property name="hibernate.dialect" \
value="org.hibernate.dialect.PostgreSQLDialect"/>
■5.あとは、チュートリアルどおり
Entityを作って、JSF from Entityを作って、動作確認。
GlassFishを使う場合は、APサーバにデプロイされてるデータソース(コネクションプール)を、NetBeansから直接参照できます。※しかも、作成や管理もできて、ちょっと感動しました。
Tomcatでは、それができませんので、persistence.xmlの設定はJDBCを生で参照しています。ここは、手動で設定しなければならないようです。でも、persistence.xmlをいじるだけですから、慣れてる人にとっては、さほどの手間ではないでしょう。
ザザっと書いてますが、JBoss試したり、MySQL試したりと、整理できるまでいろいろごちゃごちゃでした。今の構成でも、どれだけ良い結果になるかは、まだまだこれからです。
何はともあれ、TopLinkとHibernateの対応DBの幅の違いが、大きく影響してる気がします。自分にとってはHibernateの方が安心できる。でも、もしかしてDerbyがめちゃめちゃ良いDBだとしたら、余計なこと考えずとも、Sun JavaでOK!なのかもしれませんね(この辺りのケーススタディあるのかな?)。
この構成で残念なのは、前述のように、NetBeansとAPPサーバの連携が若干劣ってしまうことなので、いらない機能を許せるなら、
NetBeans+GlassFish+Hibernate+好きなDB
が、最強かも。でも私は、許せないw