- @Entityアノテーションと@Idアノテーション
- @Tableアノテーション
- @GeneratedValueアノテーション
- @Columnアノテーション
- @Transientアノテーション
- @MappedSuperclassアノテーション
- 次回は
@Entityアノテーションと@Idアノテーション
まずは、これが無いと始りません。@Entityは該当のクラスがエンティティであることを指定し、@Idはプライマリキーとなるプロパティかフィールドを指定します。
@Entity public class Customer { @Id private Long id; private String firstname; private String lastname; // ・・ }
@Idは以下の様に指定することもできます。というかこっちの方が一般的か?
@Id public Long getId() { return id; }
@Tableアノテーション
@Entityでは、該当のクラス名がテーブルとマッピングされますが、異なるテーブルとマッピングさせたい場合は@Tableでテーブル名を指定します。
@Entity @Table(name="CUST") public class Customer {
以下のようにスキーマも指定できます。
@Entity @Table(name="CUST", schema="RECORDS") public class Customer {
@GeneratedValueアノテーション
@Idで指定したプライマリキーの採番方法を指定します。
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long getId() { return id; }
strategy として、Id の生成方法を指定します。GenerationTypeとしては、AUTO, IDENTITY, SEQUENCE, TABLEがある。上記例では、id カラムが identity 列として指定。シーケンスを使う場合は以下のような指定が可能。
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CUST_SEQ") @SequenceGenerator(name="CUST_SEQ", allocationSize=25) public Long getId() { return id; }
@Columnアノテーション
カラム属性を指定します。プロパティかフィールドに指定します。
@Entity public class Customer { @Column(name = "first_name", nullable = false, length = 30) public String getFirstname(){ return firstname };
この例では、first_nameというカラム名で、非null、カラム長を30として指定している例となります。
@Transientアノテーション
永続化対象外とするプロパティやフィールドを指定します。
@Entity public class Employee { @Id int id; @Transient User currentUser;
この例では、currentUserはテーブルへのマッピング対象外となります。
@MappedSuperclassアノテーション
Entityを親クラスと子クラスの2つで定義したい場合、親クラス側へは、@Entityアノテーションではなく@MappedSuperclassアノテーションを指定します。
@MappedSuperclass public abstract class BaseEntity { @Id protected Long id; // ・・・ } @Entity public class Customer extends BaseEntity { public String name; // ・・・ }
@MappedSuperclassを付けないと、BaseEntity の id は永続化されません。
次回は
次回は、テーブル間のマッピング用のアノテーション@ManyToOne、@OneToOne、@OneToMany などについて記載します。
JPAのJavaDoc
https://java.sun.com/javaee/5/docs/api/javax/persistence/package-summary.html
Pro JPA 2 (Expert's Voice in Java)
- 作者: Mike Keith,Merrick Schincariol
- 出版社/メーカー: Apress
- 発売日: 2013/09/26
- メディア: ペーパーバック
- この商品を含むブログを見る