SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

今からでも遅くない、JPAを学ぼう!

今からでも遅くない JPAを学ぼう!(後編)
オブジェクト間の関連を理解し、JPQLを使用する

ディレクション、カーディナリティは難しくない

ダウンロード サンプルコード (14.2 KB)

Meigaraクラスの実装

 リスト3がMEIGARAテーブルに対応したMeigaraクラスです。

リスト3.Meigaraクラス
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:    public Meigara() {
016:    }
017:
018:    public Meigara(
019:            int id,
020:            String name,
021:            String nameKana,
022:            int dosu,
023:            String koji,
024:            String sweetPotatoName,
025:            String manufacturer,
026:            float volume,
027:            int price) {
028:        this.id = id;
029:        this.name = name;
030:        this.nameKana = nameKana;
031:        this.dosu = dosu;
032:        this.koji = koji;
033:        this.sweetPotatoName = sweetPotatoName;
034:        this.manufacturer = manufacturer;
035:        this.volume = volume;
036:        this.price = price;
037:    }
038:
039:    @Id
040:    @GeneratedValue(strategy=GenerationType.IDENTITY)
041:    @Column(name = "ID")
042:    public int getId() {
043:        return id;
044:    }
045:
046:    public void setId(int id) {
047:        this.id = id;
048:    }
049:
050:    @Column(name = "NAME")
051:    public String getName() {
052:        return name;
053:    }
054:
055:    public void setName(String name) {
056:        this.name = name;
057:    }
058:
059:    @Column(name = "NAMEKANA")
060:    public String getNameKana() {
061:        return nameKana;
062:    }
063:
064:    public void setNameKana(String nameKana) {
065:        this.nameKana = nameKana;
066:    }
067:
068:    @Column(name = "DOSU")
069:    public int getDosu() {
070:        return dosu;
071:    }
072:
073:    public void setDosu(int dosu) {
074:        this.dosu = dosu;
075:    }
076:
077:    @Column(name = "KOJI")
078:    public String getKoji() {
079:        return koji;
080:    }
081:
082:    public void setKoji(String koji) {
083:        this.koji = koji;
084:    }
085:
086:    @Column(name = "SWEETPOTATONAME")
087:    public String getSweetPotatoName() {
088:        return sweetPotatoName;
089:    }
090:
091:    public void setSweetPotatoName(String sweetPotatoName) {
092:        this.sweetPotatoName = sweetPotatoName;
093:    }
094:
095:    @Column(name = "MANUFACTURER")
096:    public String getManufacturer() {
097:        return manufacturer;
098:    }
099:
100:    public void setManufacturer(String manufacturer) {
101:        this.manufacturer = manufacturer;
102:    }
103:
104:    @Column(name = "VOLUME")
105:    public float getVolume() {
106:        return volume;
107:    }
108:
109:    public void setVolume(float volume) {
110:        this.volume = volume;
111:    }
112:
113:    @Column(name = "PRICE")
114:    public int getPrice() {
115:        return price;
116:    }
117:
118:    public void setPrice(int price) {
119:        this.price = price;
120:    }
121:
122:}

 このクラスは前編で使用したクラスと同じです。唯一違う行が40行目ですが、TopLinkの場合、この指定を入れなくても自動採番されます。BasketItemクラスとMeigaraクラスは多対1の単方向の関連を持っています。単方向の矢印の先にあるクラス、この場合であればMeigaraクラスはBasketItemクラスから使用されていることさえ認識していません。したがって、関連を表現するアノテーションは一切必要ありません。

次のページ
関連を持ったEntityクラス群を扱うクラスの実装

この記事は参考になりましたか?

今からでも遅くない、JPAを学ぼう!連載記事一覧
この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5061 2010/05/14 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー