NetBeans で始める Hibernate
この記事では Eclipse を使っていますが NetBeans で使う場合には以下のような構成になります。
| IDE |
NetBeans 6.5 RC2 日本語版 |
| データベース |
MySQL 5.0.41 |
| JDBCドライバ |
mysql-connector-java-5.1.6-bin.jar
(IDE にバンドル) |
| Hibernate |
3.2.5 (IDE にバンドル) |
データベースは MySQL をあらかじめインストールしておく必要がありますがデータベースや表の作成は NetBeans 上から行うことができます。MySQL 用 JDBC ドライバも Hibernate も NetBeans に含まれていますので別途用意する必要はありません。また Hibernate 構成ファイルやマッピングファイル、クラスファイルなどはほとんどがウィザードで作成可能です。構成ファイルは XML を直接編集するのではなく GUI エディタが付いています。
手順はこのようになります。
- データベースの準備をする
- NetBeans で Java プロジェクトを作成する
- Hibernate 構成ファイルを作成する
- マッピングファイルとエンティティクラスを作成する
- 実際のコードを書く
- 実行する
MySQL のデータベースを作りましょう。「サービス」タブの「データベース」を開きます。

MySQL が動いていればここは自動的に接続してデータベースを表示してくれるはずです。もし(接続なし)と表示されたら右クリックでメニューを開いて「接続」します。パスワードが設定されていればプロパティーで設定します。

このようにデータベースが見えるようになります。

ではサンプルで使うデータベースを作成しています。これは NetBeans 上で行うことができます。「データベースを作成」を選びます。

データベース名には例えば「hibernate_sample」と入力し了解ボタンを押します。

データベースが作成されたらこれを「接続」しておきます。これをやっておくとデータベース以下に表示され表を作成したりデータを実際に入力することができます。また後で紹介するデータベースからエンティティクラスを作成する場合に簡単に指定できます。

jdbc:mysql://localhost:3306/hibernate_sample というノードが出来ました。その下の「表」でメニューを開き、今度は表を作成してみましょう。

記事の通りに作成します。表の作成も GUI からおこなうことができます。

表を作成すると以下のようにツリーに表示されます。ここにデータを入れていってみます。

EMP を選択しメニューから「データを表示」を選びます。

エディタ区画には SQL コマンドを実行できるエディタが開きます。またその下には表の中身が表示されます。

テーブルの上のボタンを押しデータを入れていきます。「SQL を表示」ボタンを押すと下にどのような SQL が発行されるか確認できます。

以下のように2つ入れてみました。もちろん削除変更もできます。

さてこれでデータベースの準備は終わりました。Hibernate の例に限らずこのデータベース機能はとても役に立ちます。
2. NetBeans で Java プロジェクトを作成する
単純な Java プロジェクトを作成していきます。新規プロジェクトダイアログでカテゴリに「Java」、プロジェクトに「Java アプリケーション」を選びます。

この例ではプロジェクト名には「HibernateSample」と入力し「完了」ボタンを押します。

main() を含むプロジェクトが作成されます。
3. Hibernate 構成ファイルを作成する
次に構成ファイルを作成します。新規ファイルダイアログでカテゴリに「Hibernate」、ファイルの種類に「Hibernate の構成ファイル」を選択します。

「名前と場所」パネルではこのファイルを src/config 以下に置くようにします。「フォルダ」に「src/config」と入力してください。
データソースの選択画面では使いたいデータベースを選びます。
プルダウンリストには有効なデータベース接続が表示されるはずです。ここでは MySQL で登録した hibernate_sample データベースを使用します。


もちろん XML ファイルを直に編集が可能です。「デザイン」タブから「XML」タブに切り替えます。ここではコード補完が動きますね。Hibernate のプロパティーとその簡単な説明が表示されます。

プロジェクトのライブラリを見てみましょう。必要なライブラリが追加されています。これは NetBeans にバンドルされているものです。また mysql-connector-java-5.1.6-bin.jar という MySQL のライブラリが追加されていることもわかります。

4. マッピングファイルとエンティティクラスを作成する
構成ファイルが作成されたら実際の表とのマッピングファイルとそれに対応するエンティティークラスを作成します。これもウィザードで作成が可能です。新規ファイルダイアログでカテゴリに「Hibernate」、ファイルの種類に「データベースからの Hibernate のマッピングファイルと POJO」を選択します。

この構成ファイルも src/config 以下に保存するようにフォルダを変更します。

ここで自動的にデータベースの表「EMP」は「使用可能な表」にリストされるのでそれを追加します。

コードの生成はせっかくなので「JDK 5 言語機能」と「EJB 3 注釈」をチェックして生成してみます。パッケージは config ではなく「hibernatesample」にします。

「完了」ボタンを押すと Emp.java と Emp.hbm.xml が作成されます。config/ 以下には hibernate.cfg.xml と hibernate.reveng.xml ファイルがあります。

package hibernatesample; // Generated 2008/11/17 23:27:18 by Hibernate Tools 3.2.1.GA import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * Emp generated by hbm2java */ @Entity @Table(name="EMP" ,catalog="hibernate_sample" ) public class Emp implements java.io.Serializable { private int empno; private String ename; private String job; private Date hiredate; public Emp() { } public Emp(int empno) { this.empno = empno; } public Emp(int empno, String ename, String job, Date hiredate) { this.empno = empno; this.ename = ename; this.job = job; this.hiredate = hiredate; } @Id @Column(name="EMPNO", unique=true, nullable=false) public int getEmpno() { return this.empno; } public void setEmpno(int empno) { this.empno = empno; } @Column(name="ENAME", length=10) public String getEname() { return this.ename; } public void setEname(String ename) { this.ename = ename; } @Column(name="JOB", length=10) public String getJob() { return this.job; } public void setJob(String job) { this.job = job; } @Temporal(TemporalType.DATE) @Column(name="HIREDATE", length=10) public Date getHiredate() { return this.hiredate; } public void setHiredate(Date hiredate) { this.hiredate = hiredate; } }
5. 実際のコードを書く
これで準備ができました。実際に動くコードを書いてみましょう。Main.java の main() に追加します。ここでは単純にテーブルをリストするコードを入れます。サンプルコードは @IT の記事と同じです。コードをコピペして import 文を修正します。メニューのコンテキストメニューから「インポートの修正」を選びます。以下のように選択して「了解」ボタンを押します。

これで出来上がりです。
6. 実行する
メニューの「実行」から「主プロジェクトを実行」を選ぶか、ツールバーの実行ボタンを押します。また F6 キーでも実行できます。おそらくここで次のエラーが出ると思います。
Exception in thread "main" org.hibernate.HibernateException: /hibernate.cfg.xml not foundhibernate.cfg.xml ファイルはクラスパス中にある必要があります。プロジェクトのプロパティーダイアログで src/config をクラスパスに追加する必要があります。「ライブラリ」カテゴリで「JAR/フォルダの追加」を選び src/config を追加します。

さてもう一回実行します。今度は正しく実行してくれました。これだけできればあとはコードを変更しいろいろ試すことができますね。





なぜかHQLサポートしてくれるのにJPQLサポートしてくれないNetBeansの不思議さが気になります。
JPAサポートも6.5の次くらいには大幅に改良されますかね?
Posted by shinsan on November 19, 2008 at 01:14 AM JST #