エンベッダブルクラス¶
Embeddable(エンベッダブル)は、データベースのテーブルやクエリの結果セット複数カラムをグループ化します。
エンベッダブル定義¶
エンベッダブルクラスは @Enbeddable を注釈して示します。 コンストラクタには永続的なフィールドに対応するパラメータが必要です。
@Embeddalbe
public class Address {
final String city;
final String street;
@Column(name = "ZIP_CODE")
final String zip;
public Address(String city, String street, String zip) {
this.city = city;
this.street = street;
this.zip = zip;
}
}
エンベッダブルクラスは エンティティクラス のフィールドとして使用します。
@Entity
public class Employee {
@Id
Integer id;
Address address;
}
テーブルや結果セットとのマッピングにおいて、上記のクラス定義は下記のクラス定義と同等です。
@Entity
public class Employee {
@Id
Integer id;
String city;
String street;
@Column(name = "ZIP_CODE")
String zip;
}
フィールド定義¶
エンベッダブルクラスのフィールドはデフォルトで永続的です。 つまり、テーブルや結果セットのカラムに対応します。 フィールドの型は次のいずれかでなければいけません。
- 基本型
- ドメインクラス
- 基本型 または ドメインクラス のいずれかを要素とするjava.util.Optional
- java.util.OptionalInt
- java.util.OptionalLong
- java.util.OptionalDouble
@Embeddalbe
public class Address {
...
String street;
}
非永続的なフィールド¶
非永続的なフィールドは、@Transient を注釈して示します。
取得時の状態を管理するフィールド¶
エンベッダブルクラスには取得時の状態を管理するフィールドを定義できません。