EclipseLinkを使ってみる~初めてのORM

O/Rマッパーとやらはとても便利だそうなのであんまり概念とか分かってないけど使ってみる。

テーブルを作成

前回の記事のとおりデータベースを追加し、テーブルもNetBeansで定義してCraete。
データベースはH2を使用している。
テーブルはこのとおりやっつけ系。
f:id:vostochnaya:20140426180751p:plain

エンティティ・クラスを作る

その名のとおりエンティティ。

  1. プロジェクト右クリック 新規 > データベースからのエンティティ・クラス
  2. ウィザードが出てくるのでデータベース接続を選択し、クラスを作りたいテーブルを追加する
  3. 次へ > 次へ で完了

SampleTable.java と SampleTablePK.java が作成された。
できたてはエラーになっていたけどバックグラウンドで eclipselink が依存性に追加され、勝手にエラーが解消した。

コントローラ・クラスを作る

エンティティだけじゃ何もできないのでコントローラ・クラスを追加してみる。

  1. 持続性カテゴリからエンティティ・クラスのJPAコントローラ・クラスを新規作成
  2. 先ほど作成したSampleTable.javaがあるのでそれを追加する

SampleTableJpaController.java が作成された。
ついでに同列にexceptionsパッケージが追加され、例外クラスが生成されている。

  • IllegalOrphanException.java
  • NonexistentEntityException.java
  • PreexistingEntityException.java

persistence.xmlを編集

スキーマがPUBLICのせいかテーブルが見つかりませんエラーが出るので少し修正。
persistence.xml に propertyを追加する。

<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>

更に、接続の時の名前が自動生成だとアレな感じなので変えておく。
とりあえず test と・・・(余計悪い名前になった感)

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL">

接続

では実行してみる。とりあえず動いた。

実行結果

Key1: KEY_1
Key2: KEY_2
Att VChar:Sample Text
Att Dec: 1
Att Date: Sat Apr 26 19:37:20 JST 2014
Att Time: 19:37:20