エンタープライズアプリケーションでは、通常データをデータベース(DB)に保存する。
Java EEでDBとデータのやり取りをするには、Java Persistence API(JPA)を使用する。
JPAでは、テーブルの各行をオブジェクトに対応させるEntityを作成する。
なお、JDKやGlassFish?には標準でデータベース(JavaDB,Derby)が付属しているので、データベースのインストールは不要である。
他のデータベース製品を使用するときのみ、インストールを行い設定する。
ファイル→新規ファイルからEntityを作成する。
プロジェクトに-ejbの名前のプロジェクトを選び、カテゴリ:持続性のファイル・タイプ:エンティティ・クラスを選択し、次へ。
#ref(): File not found: "jpa1.gif" at page "Entityの作成"
エンティティのクラス名とパッケージ名を入力する。(デフォルトパッケージは使えないようだ)
#ref(): File not found: "jpa2.gif" at page "Entityの作成"
本来DBの接続先等を設定するが、とりあえずデータ・ソースにjdbc/sampleを選び、終了。
#ref(): File not found: "jpa3.gif" at page "Entityの作成"
Entityのソースコードが自動的に生成される。
このクラスは@ではじまるアノテーションがいくつか使用されているが、次のような意味である。
@Entity:このクラスがEntityであることを認識させるために付加する。(必須)
@Id:主キー(行を一意に識別するキー)であることを表す。(各Entityに1つ必要)
@GeneratedValue?:一意な値を自動的に生成する。(strategy=GenerationType?.AUTOは生成手法を自動選択にすることを意味)
#ref(): File not found: "jpa4.gif" at page "Entityの作成"
Entityに必要な項目のフィールドを追加する。
@Temporal:日付型のjavaクラスがDBのDATE(日付のみ)、TIME(時刻のみ)、TIMESTAMP(日付と時刻)のどれに対応するか指定する。
#ref(): File not found: "jpa5.gif" at page "Entityの作成"
追加したフィールドのgetter/setterは必ず作成する。
右クリック→コードを挿入(Alt+Insert)から、取得メソッドおよび設定メソッドを選ぶ。
#ref(): File not found: "jpa6.gif" at page "Entityの作成"
getter/setterを作成するフィールドにチェックを入れ生成。
#ref(): File not found: "jpa7.gif" at page "Entityの作成"
getter/setterが自動的に入力される。
#ref(): File not found: "jpa8.gif" at page "Entityの作成"
多くのデータ操作ではJPAのAPIを使用するが、@NamedQuery?アノテーションを使用してSQL(通常のデータベースで操作を行う言語)のように操作を書くこともできる。
name:名称、query:JPQL(JPAのSQLに似たクエリ言語)を記入する。
下ではこのテーブルから全部のデータをid順で取得する式を記入している。
#ref(): File not found: "jpa9.gif" at page "Entityの作成"
ツリーから構成ファイルを開き、persistence.xmlをダブルクリックすると、DBの接続先等を修正できる。
#ref(): File not found: "jpa10.gif" at page "Entityの作成"