最近現場で使っていて,色々と細かい点をまとめておく意味で,これから何回かに分けて書いていこうかと思っているところ.
まず,第1回目はIDの種類.
JPAのIDには以下の3つの形式が用意されている.
@Id
@EmbeddedId
@IdClass
これらの違いについて簡単に説明をする.
@Id
単純な永続化IDかつ単純な属性の場合.
primitiveやString
,Date
などのJavaの単純な属性とテーブルのPKをマップする.
@Entity
public class MyEntityA implements Serializable {
@Id
private String id;
//...
}
@EmbeddedId
複合永続化IDかつ単純な属性の場合.
通常のJavaクラスとして定義される型で定義されるJavaの属性とテーブルの複合キーをマップする.
@Embeddable
public class MyKey implements Serializable {
private String name;
private Long number;
}
@Entity
public class MyEntityB implements Serializable {
@EmbeddedId
private MyKey key;
//...
}
@IdClass
複合永続化IDかつ複数の属性の場合.
単純な複数のJavaの属性とテーブルの複合キーをマップする.
旧スタイルのEJB実装のmigration用に追加されたもの.
@Entity
@IdClass(MyKey.class)
public class MyEntityC implements Serializable {
@Id
private String name;
@Id
private Long number;
//...
}
今回はここまで.
次回はIdGeneratorを取り上げる予定.
P.S.
このブログはコード例が書きにくいから途中で萎えるかも…