スプリングスプリングSpring-@Embedded@Embeddable@ElementCollection差異
1. @Embedded @Embeddable
このようにして、実装時に発生する問題は、フィールドを追加すると乱雑になり、読み取り可能性が低下する.
3つのアドレスフィールドをAddressというクラスに組み合わせるとどうなりますか?
2.@AttributeOverride
クラスを@Embedded形式で取得する場合は、複数回希望する場合があります.
しかし、これは重複するコラム名を招きます.この場合、@AttributeOverrideを使用してカラム名をカスタマイズできます.
同じ埋め込み宣言を使用して重複するカラムエラーを生成
3. @ElementCollection
@Embeddedの色がCollectionだったらどうしますか?
imbeddyタイプはコンテナになるべきではないという.
新しいテーブルの作成が完了しました.
@Entity
@Getter
@Setter
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
private String zipcode;
private String address;
private String subAddress;
}
単純なメンバーエンティティが作成されました.次の3つのフィールドはメンバーのアドレスです.このようにして、実装時に発生する問題は、フィールドを追加すると乱雑になり、読み取り可能性が低下する.
3つのアドレスフィールドをAddressというクラスに組み合わせるとどうなりますか?
@Embeddable
public class Address {
private String zipcode;
private String address;
private String subAddress;
}
Addressクラスに@Embeddable宣言を追加@Entity
@Getter
@Setter
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
// private String zipcode;
// private String address;
// private String subAddress;
@Embedded
private Address address;
}
既存のエンティティオブジェクトにバインドするフィールドに@Embedded宣言を追加
2.@AttributeOverride
クラスを@Embedded形式で取得する場合は、複数回希望する場合があります.
しかし、これは重複するコラム名を招きます.この場合、@AttributeOverrideを使用してカラム名をカスタマイズできます.
// 중복 테스트
@Entity
@Getter
@Setter
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
@Embedded
private Address address;
@Embedded
private Address parentAddress;
}

同じ埋め込み宣言を使用して重複するカラムエラーを生成
// 컬럼 네임 커스텀
@Entity
@Getter
@Setter
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
@Embedded
@AttributeOverride(name = "zipCode", column = @Column(name = "MY_ZIP_CODE"))
@AttributeOverride(name = "address", column = @Column(name = "MY_ADDRESS"))
@AttributeOverride(name = "subAddress", column = @Column(name = "MY_SUB_ADDRESS"))
private Address address;
@Embedded
@AttributeOverride(name = "zipCode", column = @Column(name = "PARENT_ZIP_CODE"))
@AttributeOverride(name = "address", column = @Column(name = "PARENT_ADDRESS"))
@AttributeOverride(name = "subAddress", column = @Column(name = "PARENT_SUB_ADDRESS"))
private Address parentAddress;
}

3. @ElementCollection
@Embeddedの色がCollectionだったらどうしますか?

imbeddyタイプはコンテナになるべきではないという.
@Entity
@Getter
@Setter
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
@ElementCollection
private List<Address> addresses;
}
@ElementCollectionはマッピングできます.「コレクション」(Collection)列は「メンバー」(Member)テーブルに追加されません.新しいテーブルの作成が完了しました.


Reference
この問題について(スプリングスプリングSpring-@Embedded@Embeddable@ElementCollection差異), 我々は、より多くの情報をここで見つけました https://velog.io/@kjw4840/스프링-Spring-Embedded-Embeddable-Elementcollection-차이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol