NetBeansを使ってMeigaraクラスを作成
NetBeansでMeigaraクラスを開きます。まずは図1のようにmeigaraテーブルのカラムに相当するフィールドを宣言します。次にこれらのフィールドのgetter/setterメソッドを作成します。
NetBeansの場合、[リファクタリング]-[フィールドをカプセル化]をクリックすると、[フィールドをカプセル化]画面が表示されます。右側にある[全てを選択]ボタンをクリックし、さらに[リファクタリング]をクリックするとsetter/getterメソッドが作成されます。

ここからEntityクラス特有のコーディングをします。最初は、class宣言の前にEntityアノテーションとTableアノテーションを記述します。javax.persistence.Entityクラスとjavax.persistence.Tableクラスもimportします。
アノテーションを記述するたびにimport文を書くのは面倒です。NetBeansに限らず、Eclipseや他の商用の開発環境のほとんどが、エラーの場合、どのような対応をすべきか候補を挙げてくれます。NetBeansの場合も図2のように行番号の15、16行目ところに電球のアイコンが表示され、ここをクリックすると対処方法の候補が表示されます。15行目の電球をクリックすると、[javax.persistence.Entityをインポートに追加]を含め4つの解決策の候補が表示されるはずです。[javax.persistence.Entityをインポートに追加]をクリックするとjavax.persistence.Entityのimport文が自動的に追加されます。
これ以降の説明でJPA関連のアノテーションを説明する場合、同様な操作をするものとし操作自体の説明は割愛します。Tableアノテーションも同様に操作して確認してください。

次にテーブルのカラムとフィールドの紐づけをColumnアノテーションで行います。主キーに紐づける場合はColumnアノテーションの前にIdアノテーションを付けます。ここまでのコードがリスト1です。フィールドはnameのみ表示しています。他の項目も同様にColumnアノテーションを付けます。
001:@Entity
002:@Table(name = "MEIGARA")
003:public class Meigara implements Serializable {
004:
005: private int id = 0;
006: private String name = "";
007: private String nameKana = "";
008: private int dosu = 0;
009: private String koji = "";
010: private String sweetPotatoName = "";
011: private String manufacturer = "";
012: private float volume = 0f;
013: private int price = 0;
014:
015: @Id
016: @Column(name = "ID")
017: public int getId() {
018: return id;
019: }
020:
021: public void setId(int id) {
022: this.id = id;
023: }
024:
025: @Column(name = "NAME")
026: public String getName() {
027: return name;
028: }
029:
030: public void setName(String name) {
031: this.name = name;
032: }
次に、リスト2のように引数のないコンストラクタと全てのフィールドに値を設定するコンストラクタを追加します。
001: public Meigara() {
002: }
003:
004: public Meigara(
005: int id,
006: String name,
007: String nameKana,
008: int dosu,
009: String koji,
010: String sweetPotatoName,
011: String manufacturer,
012: float volume,
013: int price) {
014: this.id = id;
015: this.name = name;
016: this.nameKana = nameKana;
017: this.dosu = dosu;
018: this.koji = koji;
019: this.sweetPotatoName = sweetPotatoName;
020: this.manufacturer = manufacturer;
021: this.volume = volume;
022: this.price = price;
023: }
以上で、MeigaraクラスはEntityクラスの要件を満たしました。ただしクラス宣言の箇所で「プロジェクトに持続性ユニットがありません」という警告が出ています。これは無視してはいけない警告です。JPAの表舞台のプレイヤーでは説明しませんでしたが、大切な裏方さんであるため作成する必要があります。
電球のアイコンをクリックすると[持続性ユニットを作成]と表示されるのでクリックします。[持続性ユニットを作成]画面が表示されます。[持続性ユニット名]はデフォルトで表示されている「JPASample01PU」をそのまま指定します(別の名前で構いません)。[持続性ライブラリ]のデフォルトは「EclipseLink」となっていますが、今回はTopLinkを使用しているためリストから「TopLink」を選択します。
[データベース接続]は「実装のための準備」の説明通り行っていれば「jdbc:mysql://localhost:3306/imoshop」がリストに表示されているはずで、それを選択します。[表生成の方針]は既にmeigaraテーブルを作成しているので[なし]のラジオボタンをチェックし、[作成]ボタンをクリックします。
プロジェクトタブの[JPASample01]-[ソースパッケージ]の下に[META-INF]が、さらにその下にpersistence.xmlが作成されているはずです。このXMLファイルの内容を確認すると図3のようにMySQLのimoshopスキーマに接続するための情報が記述されています。[持続性ユニットを作成]だけではEntityクラスの情報が不足しているため、class要素としてjp.kawakubo.Meigaraを手で追加しています。Entityクラスを作成するたびにpersistence.xmlにクラスを追加していくことになります。

