Hibernate メモ

作成 2004/1/6
更新 2004/3/10

Hibernateって?

HibernateはJavaのORマッピングツールです。LGPLライセンスで提供されており、無償で利用できます。JDO(JSR-012)の仕様に準拠しているわけではではないですが、導入が簡単で使いやすいツールになっています。最近よく使っている人みるような?

動くまで

ああ動いたよってだけのメモですが。

ここではHibernateを利用して、DBへのINSERTとSELECT(だけ)を行ってみます。

実験環境

ダウンロード

以下からhibernateをダウンロードします。

http://www.hibernate.org/

ここでは最新リリースの2.1.1 をダウンロードしました。

最小構成

次のリソースを作成(またはコピー)しました。Javaのクラスはhogeパッケージにつくっています(なんとなく)。設定ファイル系はクラスパスのルートに置いています。

src  ソースディレクトリ(コンパイルされてクラスパス)
  +--hoge
    +--Dog.java     テーブルにマッピングするJavaクラス
    +--Insert.java  INSERTするクラス
    +--Select.java  SELECTするクラス
  +--dog.hbm.xml     マッピングファイル
  +--hibernate.cfg.xml  hibernateの設定ファイル
  +--log4j.properties  log4j

クラスパス

hibernateのhibernate2.jarおよび、lib以下の各種JARにクラスパスを通します(きっと全部はいらないと思うが)。あと、JDBCドライバも必要です。

hibernate設定ファイル

hibernate.cfg.xmlがhibernateの設定ファイルです。hibernate.hbm2ddl.autoプロパティーを指定して、実行時にCREATE文を発行するようにしています。hibernate.show_sqlは発行するSQLがダンプされます。デバッグにどうぞ。指定できるプロパティーはマニュアル(ここのHibernate JDBC Properties、Other properties付近)を参照してください。

Javaクラス

マッピングしたJavaクラスがDog.javaです。普通のJavaBeansです。

マッピングファイル

dog.hbm.xmlがJavaクラスとDBテーブルのマッピングファイルです。idの主キーはuuidパターンというもので自動生成してます。なお、hibernate設定ファイルにこのマッピングファイルを指定していますが、プログラム中から指定もできます。

ログファイル

hibernateがlog4jを使っているので、log4jの設定ファイルも必要です。ここではhibernateのsrc以下のlog4j.propertiesをコピーして使いました。

INSERT実行

hibernateのDBアクセスは、SessionFactoryからSessionを作成して、Sessionを通して行います。更新系の処理はSessionからTransactionを作成して使います。で、保存はこんな感じと。こういうコードでINSERT出来るんじゃん!(無理やり感動)

Dog dog = new Dog();
dog.setName("akita");
dog.setAge(10);
session.save(dog);

SELECT実行

SELECTはこんな感じ。

List list = session.createCriteria(Dog.class).list();

検索条件には、HQL(Hibernate風SQL)か、Expressionクラスを使った条件指定が可能です(上の例は単に全件検索)。

感想

えー、というわけで、まあ、すんなり使えますね。どのO/Rマッピングツールもそうですが、マッピングファイルを書くのが一番めんどくさかったりするわけで、それはツールである程度自動生成したりするのでしょうが。でもって、パフォーマンスや信頼性は、ある程度使い込まないとわからないですねと。

機会があったら、もうちょっと調べます。せめてJOINぐらい。今宵はここまで。

参考

nekop.nondakure.jp - Hibernate
http://nekop.nondakure.jp/hiki/hiki.cgi?Hibernate

WEB+DB PRESS vol.18 これからのデータベースアクセス
http://www.gihyo.co.jp/magazines/wdpress/archive/Vol18

Java Developer 2004.1 JDO&O/Rマッピング
http://www.javadeveloper.jp/static/200401/index.html


TOP