@ElementCollection
•
Element 객체의 컬렉션 집합이다.
•
Element 로는 기본 타입(String, Long 등) 과 Embeddable 로 선언된 객체가 될 수 있다.
•
부모 Entity Id와 추가 컬럼(basic or embedded 타입)으로 구성된다.
•
기본적으로 값 타입 컬렉션에 변경 사항(저장, 삭제)이 발생하면, 소유하는 엔티티와 연관된 모든 데이터를 삭제하고, 현재 남아있는 값을 모두 다시 저장한다.
@CollectionTable
•
@Table 과 같이 Collection 으로 선언된 변수에 대한 테이블을 만들 때 사용
•
연관 객체에 의존적이기때문에 옵션으로는 joinColumns 와 foreignKey 가 있다.
@AttributeOverride
•
column 명을 정의할 수 있다.
@Embedded
private Code code;
@Embedded
private Code teamCode;
Java
복사
•
Embedded 객체를 사용할 때 해당 객체를 여러번 사용하면 column 명이 중복으로 들어갈 수 있다.
•
Code 객체 내부의 변수 명은 value 라서 code column 과 teamCode column 에 공통적으로 적용되어 예외가 발생
@Embedded
@AttributeOverride(name = "code", column = @Column(name = "code", nullable = false)
private Code code;
@Embedded
@AttributeOverride(name = "code", column = @Column(name = "team_code", nullable = false)
private Code teamCode;
Java
복사
@MappedSuperclass
•
부모 클래스가 엔티티가 아닐 때 상속을 해주어야 하는 경우
•
보통 BaseEntity 라는 클래스로 사용