🥰

JPAのオブジェクトとテーブルマッピング

2022/01/28に公開

オブジェクトとテーブルマッピング(Object - Table)

@Entity

  • @Entityが付いたクラスはJPAが管理、エンティティと呼ぶ。
  • JPAを用いてテーブルとマッピングするクラスは@Entity必須である
  • ディフォルトコンストラクタ必須
    • JPAの規則, パラメターのないpublic又はprotectedコンストラクタである必要がある。
  • finalクラス, enum, interface, innerクラスにては使用不可 。
  • 保存するフィルドに final使用不可。

属性

@Entity(name = "ITEM")
public class Item {
}
  • name : JPA側で使用するEntity名前を別途指定する
    • ディフォルト値 : クラスの名前
    • なるべくディフォルト値を使用する事をお勧めする。

@Table

  • @Tableはエンティティとマッピングするテーブルを指定
  • クラス名はUserだがテーブル名はMEMBERの場合
@Entity
@Table(name = "MEMBER")
public class User {
...
}

属性

属性 機能 デフォルト値
name マッピングするテーブル名 エンティティ名を使用
catalog DB catalogマッピング ----
schema DB schemaマッピング ----
uniqueConstraints(DDL) DDL生成時Unique制約を追加 ----
  • Unique制約追加
@Entity
@Table(uniqueConstraints = 
{@UniqueConstraint( name =NAME_AGE_UNIQUE, columnNames = {NAME,AGE} )})
public class Member {
...
}
  • nameDDL自動生成を使う場合nameに指定した名でテーブル名を作ってくれる。
    • @Table(name = "USER")

(次)JavaフィールドとDBカラムのマッピング

https://zenn.dev/dev_yoon/articles/8d16a71daa8202

Discussion