λ³΅ν© ν€(Composite Key)λ λ κ° μ΄μμ 컬λΌμ Keyλ‘ μ§μ νλ κ²μ λ§ν©λλ€
π λΉμλ³κ΄κ³μ μλ³κ΄κ³μΌ λ μ΄λ€ μ°¨μ΄κ° μλμ§
// 볡ν©ν€λ₯Ό κ°μ§λ λΆλͺ¨ ν΄λμ€(Parent) μ λν μλ³μ ν΄λμ€
@Embeddable // μλ³μ ν΄λμ€μ κΌ μΆκ°ν΄μΌνλ μ΄λ
Έν
μ΄μ
public class ParentId implements Serializable {
@Column(name = "PARENT_ID1")
private String id1; // parent.id1 맀ν
@Column(name = "PARENT_ID2")
private String id2; // parent.id2 맀ν
// equals,hashCode ꡬν..
}
@Entity
public class Parent {
@EmbeddedId
private ParentId id; // μλ³μ ν΄λμ€λ₯Ό μ§μ μ¬μ©
Private String name;
...
}
// 볡ν©ν€λ₯Ό κ°μ§λ λΆλͺ¨ ν΄λμ€(Parent) μ λν μλ³μ ν΄λμ€
public class ParentId implements Serializable {
private String id1; // parent.id1 맀ν
private String id2; // parent.id2 맀ν
public ParentId() {
}
@Override
public boolean equals(Object o) {..}
@Override
public int hashCode() {..}
}
@Entity
@IdClass(ParentId.class) // μλ³μ ν΄λμ€
public class Parent {
@Id
@Column(name = "PARENT_ID1")
private String id1;
@Id
@Column(name = "PARENT_ID2")
private String id2;
private String name;
...
}
π νμ©ν μ μλ λ€λ₯Έ annotationsλ€
μ΄κ±°ν κ°μ λμλλ μ«μ κ°/λ¬Έμμ΄ μ μ₯
Date, Calendar, LocalDateTime λ± λ μ§/μκ°νμ νλμ λν mapping λ°©λ² μ§μ
@Id fieldμ λμλλ PK μ»¬λΌ κ°μ μλ μμ±
νλμ entityμ λ°μ΄ν°λ€μ λ κ°μ ν
μ΄λΈμ mappingν λ μ¬μ©
@Inheritance
(μμ): μ€μ μ ν΅ν΄ 3κ°μ§ mapping strategy μ¬μ© κ°λ₯
1. Single-table: νλμ ν
μ΄λΈ