BACKEND/Spring

상속관계 λ§€ν•‘ + κ³ κΈ‰ λ§€ν•‘

솑이 🫧 2022. 1. 15. 21:26

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” 상속관계가 μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ 

 

1. 쑰인 μ „λž΅ (μ΅œμš°μ„  선택, λ³΅μž‘ν•œκ²½μš°)

insertλŠ” λΆ€λͺ¨μ™€ μžμ‹μ— 2번 / DTYPE으둜 쑰인할 μžμ‹ μ—”ν‹°ν‹° ꡬ뢄 

@Inheritance(strategy = InheritanceType.JOINED)

 

2. 단일 ν…Œμ΄λΈ” μ „λž΅(λ‹¨μˆœν•œ 경우)

ν•œ ν…Œμ΄λΈ”μ— ν•©μΉœλ‹€(JPA의 κΈ°λ³Έμ „λž΅μž„)

@Inheritance(strategy = InheritanceType.SINGLE_TABLE)

 

λΆ€λͺ¨ 엔티티에 적용 

@DiscriminatorColumn //DTYPE

 

μžμ‹μ—”ν‹°ν‹° 적용 

@DiscriminatorValue("A")//μžμ‹ μ—”ν‹°ν‹° κ΅¬λΆ„μž

 

 

@MappedSuperclass

- 상속관계 맀핑은 μ•„λ‹ˆμ§€λ§Œ κ³΅ν†΅λ˜λŠ” 속성을 μ‚¬μš©ν•˜κ³  싢은 경우 μ‚¬μš©!!

- 엔티티도 μ•„λ‹˜(ν…Œμ΄λΈ”κ³Ό λ§€ν•‘λ˜μ§€ μ•ŠλŠ”λ‹€) 

- μžμ‹ ν΄λž˜μŠ€μ— λ§€ν•‘ μ •λ³΄λ§Œ 제곡 

- 좔상 클래슀둜 μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯ 

- Ex) BaseEntity 

@MappedSuperclass
public abstract class BaseEntity { //속성 μžμ‹ν΄λž˜μŠ€μ—κ²Œ λ‚΄λ €μ£ΌκΈ° μœ„ν•¨
    private String createdBy;
    private LocalDateTime createdDate;
    private String lastModifiedBy;
    private LocalDateTime lastModifiedDate;
    .
    .
   }