O/Rマッピングに挑戦中

 前々から興味があったO/Rマッピングを使ってシステムを実装してみた。O/RマッピングとはデータベースのER図からJavaなどのオブジェクトに変換して、オブジェクトとして扱うことが出来る開発手法である。
 
 本来Javaからデータベース内にアクセスを行うときはJDBCを利用して、自分でSQLを書かないといけないのだが、テーブルが増えてくるとSQL文を書く手間も増えていくため、そこをフレームワーク化して、データベースを使ったアプリケーション開発を楽にするためのものである。
 
 今回使用しているのはHibernateという、オープンソースO/Rマッピングツールを使用している。O/Rマッピングソフトを使っているとはいえ、根幹ではJDBCを使っているので、素のJDBCを直接操作するよりは遅くなってしまう。しかし、Hibernateではパフォーマンス良いと公式ページで明言している。またそれでも十分なパフォーマンスが得られない場合は、HQL(Hibernate Query Languate)を用いて、RDBMSに対してのダイレクトなアクセスが出来る。
 
 Hibernateを使用するには設定ファイルを書く必要があるのだが、この設定ファイルを手書きするのは面倒なので、middlegenを使って自動生成した。Eclipse上であればMiddlegenIDEがEclipseプラグインとして用意されているので、それを利用すればデータベースに実際接続した後、適切な設定ファイルとデータ受け取り用のクラスを自動生成してくれる。
 
以下詰まった点など

  • Hivernate初期化時にConfigurationクラスがExceptionInInitializerErrorをスローする。

 hivernate.cfg.xmlがビルドバスに加わっていないのが原因。Eclipse上のビルドパスにhivernate.cfg.xmlが存在するパスを指定してやれば解決

  • オブジェクトを書き込むときにSQLExceptionをスローする。

 データベースに外部キー制約を設定した場合は、外部キーが参照しているオブジェクトをセッターを使って代入した後、データアクセスを行わなければならない。
 

  • 問題はなさそうだが、大量に例外をコンソールに流す。

 気にしない(ぉ
 
 使ってみた感想ですが、高々テーブル二つのデータベースに対して適用するべき様なものではない気がしてきました。まあ練習になったからいいやってことで、色々実験をしてみることにします。