πŸ“„ @MappedSuperclass

λΆ€λͺ¨ ν΄λž˜μŠ€λŠ” ν…Œμ΄λΈ”κ³Ό λ§€ν•‘ν•˜μ§€ μ•Šκ³  λΆ€λͺ¨ 클래슀λ₯Ό μƒμ†λ°›λŠ” μžμ‹ ν΄λž˜μŠ€μ—κ²Œ λ§€ν•‘ μ •λ³΄λ§Œ μ œκ³΅ν•˜κ³  μ‹ΆμœΌλ©΄ @MappedSuperclassλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

@MappedSuperclassλ₯Ό λΉ„μœ ν•˜λ©΄ 좔상 ν΄λž˜μŠ€μ™€ λΉ„μŠ·ν•œλ°

@EntityλŠ” μ‹€μ œ ν…Œμ΄λΈ”κ³Ό λ§€ν•‘λ˜μ§€λ§Œ

@MappedSuperclassλŠ” μ‹€μ œ ν…Œμ΄λΈ”κ³Ό λ§€ν•‘λ˜μ§€ μ•ŠλŠ”λ‹€.

λ‹¨μˆœνžˆ λ§€ν•‘ 정보λ₯Ό 상속할 λͺ©μ μœΌλ‘œλ§Œ μ‚¬μš©λœλ‹€.

νšŒμ›(Member)κ³Ό 판맀자(Seller)λŠ” μ„œλ‘œ 관계가 μ—†λŠ” ν…Œμ΄λΈ”κ³Ό μ—”ν‹°ν‹°λ‹€.

@MappedSuperclasspublic abstract class BaseEntity {    @Id    @GeneratedValue    private Long id;    private String name;}@Entitypublic class Member extends BaseEntity{    //ID, NAME 상속    private String email;}@Entitypublic class Seller extends BaseEntity{    //ID, NAME 상속    private String shopName;}

BaseEntity에 객체듀이 주둜 μ‚¬μš©ν•˜λŠ” 곡톡 λ§€ν•‘ 정보λ₯Ό μ •μ˜ν–ˆλ‹€.

μžμ‹ 엔티티듀은 상속을 톡해 BaseEntity의 λ§€ν•‘ 정보λ₯Ό λ¬Όλ €λ°›μ•˜λ‹€.

*BaseEntityλŠ” ν…Œμ΄λΈ”κ³Ό λ§€ν•‘ν•  ν•„μš”κ°€ μ—†κ³  μžμ‹ μ—”ν‹°ν‹°μ—κ²Œ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” λ§€ν•‘ μ •λ³΄λ§Œ μ œκ³΅ν•˜λ©΄ λœλ‹€. (@MappedSuperclassλ₯Ό μ‚¬μš©)*

λΆ€λͺ¨λ‘œλΆ€ν„° 물렀받은 λ§€ν•‘ 정보λ₯Ό μž¬μ •μ˜ν•˜λ €λ©΄ @AttributeOverridesλ‚˜ @AttributeOverrideλ₯Ό μ‚¬μš©ν•˜κ³ ,

연관관계λ₯Ό μž¬μ •μ˜ν•˜λ €λ©΄ @AssociationOverridesλ‚˜ @AssociationOverrideλ₯Ό μ‚¬μš©ν•œλ‹€.

@Entity@AttributeOverride(name="id", column = @Column(name="MEMBER_ID"))public class Member extends BaseEntity{...}

λΆ€λͺ¨μ—κ²Œ 상속받은 id μ†μ„±μ˜ 컬럼λͺ…을 MEMBER_ID둜 μž¬μ •μ˜ν–ˆλ‹€.

λ‘˜ 이상 μž¬μ •μ˜ν•˜λ €λ©΄ @AttributeOverridesλ₯Ό μ‚¬μš©

@Entity@AttributeOverrides({        @AttributeOverride(name="id", column = @Column(name="MEMBER_ID")),        @AttributeOverride(name="name", column = @Column(name="MEMBER_NAME"))})public class Member extends BaseEntity{...}

@MappedSuperclass νŠΉμ§• 정리