μ€λμ κ°μ²΄μ μμκ΄κ³λ₯Ό DBμμ μ΄λ»κ² μ΄λ₯Ό ꡬννλμ§μ λν΄ μμ보μ.
0. μλ° μμ(Interitance)μ΄λ?
μλ°μμ μμ(Inheritance)μ 곡ν΅λ νΉμ§μ κ°μ§ ν΄λμ€λ€μ μ€λ³΅μ νΌνκ³ λμμΈνλ λ°©λ²μ΄λ€.
μλ₯Ό λ€μ΄ μ, μ¬κ°ν, μΌκ°νμ λνλ΄λ ν΄λμ€λ₯Ό μ μν΄ λ³΄μ.
λΆλͺ¨ ν΄λμ€λ₯Ό λν/μμ ν΄λμ€λ₯Ό μ, μ¬κ°ν, μΌκ°νμΌλ‘ μ μν λ€,
κ³΅ν΅ μμ±μΈ λ³μμ ν¨μλ μμμ λ°μμ μ¬μ©νκ³ , μμ ν΄λμ€μμ λ€λ₯Έ λΆλΆλ§ κΈ°λ₯μ μΆκ°νκ±°λ μ¬μ μ νλ€.
ex. κ³΅ν΅ λ³μμ ν¨μ
λ³μ
- backgroundColor
- dateCreated λ±
ν¨μ
- getDateCreated() λ±
λ€μ λ§νμλ©΄ μμμ΄λ κΈ°μ‘΄μ ν΄λμ€(λΆλͺ¨ ν΄λμ€=superclass)μ κΈ°λ₯μ μΆκ°νκ±°λ μ¬μ μνμ¬ μλ‘μ΄ ν΄λμ€(μμ ν΄λμ€=subclass)λ₯Ό μ μνλ κ²μ΄λ€.
μ΄λ, μμ ν΄λμ€λ λΆλͺ¨ν΄λμ€λ₯Ό νμ₯νλ€λ ννμ μ¬μ©νλλ°,
μ΄κ²μ μμ ν΄λμ€μ λΆλͺ¨ ν΄λμ€λ₯Ό μ§ν© κ΄κ³(ν¬ν¨κ΄κ³)λ‘ μ΄ν΄νλ€κΈ°λ³΄λ€λ, μμ ν΄λμ€λ λΆλͺ¨ ν΄λμ€λ₯Ό μ’ λ ꡬ체νν κ²μ΄λΌλ μλ―Έμ΄λ€.
1. DB μνΌνμ κ³Ό μλΈνμ μ΄λ?
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ μμκ΄κ³λ μ‘΄μ¬νμ§ μμΌλ―λ‘ λμ μνΌνμ κ³Ό μλΈνμ μ μ΄μ©νλ€.
μ μλ λ€μκ³Ό κ°λ€.
- μνΌνμ (Supertype) : μλΈ νμ μμ 곡ν΅λ μμ±μ ν¬ν¨νλ κ²μΌλ‘ νλ μ΄μμ μλΈ νμ κ³Ό κ΄κ³λ₯Ό κ°λλ€.
- μλΈνμ (Subtype) : μνΌ νμ μ λΆλΆ μ§ν©μΌλ‘, λ€λ₯Έ νμ μ§λ¨κ³Ό λ³κ° λλ μ μΌν μμ±μ κ°μ§κ³ μλ€.
μνΌνμ μμ ꡬ체ν(Specialization)λ κ²μ μλΈνμ μ΄λΌκ³ νκ³ Top-Down λ°©μμ λΆν΄(decomposition) λ°©μμ΄λ€.
κ° μλΈνμ λ€μ μΌλ°ν(Generalization)λ ννλ₯Ό μνΌνμ μ΄λΌκ³ νκ³ Bottom-Up λ°©μμ μΆμΆ(extraction) λ°©μμ΄λ€.
μ 리νμλ©΄, 곡ν΅λ μμ±μ λ¬Άμ΄μ μνΌνμ μΌλ‘ λ§λ€κ³ , μ΄μΈμ λΆλΆμ κ° μ§λ¨μ μ μΌν μμ±μΌλ‘ μλΈνμ μΌλ‘ μ μνλ κ²μ΄λ€. 0λ²κ³Ό μ μ¬νκ² λν(μ, μ¬κ°ν, μΌκ°ν) μμλ₯Ό κ·Έλ¦ΌμΌλ‘ μ΄ν΄λ³΄λ©΄ μ§κ΄μ μΌλ‘ μ΄ν΄ν μ μλ€.
μμ κ³Όμ μ λ°μ΄ν° ν΅ν©μ΄λΌκ³ νλ©° ν΄λ¬ λͺ¨λΈμ νμ₯μ±μ΄ μ¦κ°νλ€.
2. λ Όλ¦¬ λͺ¨λΈ(μνΌνμ μλΈνμ )μ 물리λͺ¨λΈ(μμ)λ‘ κ΅¬ννλ λ°©λ²
κ°μ²΄λ μμμ μ§μνλ―λ‘ λͺ¨λΈλ§κ³Ό ꡬνμ΄ λκ°μ§λ§, DBλ μμμ μ§μνμ§ μμΌλ―λ‘ λ Όλ¦¬ λͺ¨λΈμ 물리 λͺ¨λΈλ‘ ꡬνν λ°©λ²μ΄ νμνλ€.
DBμ λ Όλ¦¬ λͺ¨λΈ(μνΌνμ μλΈνμ )μ μ€μ 물리 λͺ¨λΈλ‘ ꡬννλ λ°©λ²
- @Inheritance(strategy=InheritanceType.XXX)
- InheritanceType μ’
λ₯(XXX) - default=SINGLE_TABLE
- JOINED : μμ/νμ ν΄λμ€λ₯Ό κ°κ°μ ν
μ΄λΈλ‘ λ³ν
- @DiscriminatorColumn(name="DTYPE") : λΆλͺ¨ ν΄λμ€μ μ μΈ. νμ ν΄λμ€μ κ΅¬λΆ μ»¬λΌ μμ±. default = DTYPE
- SINGLE_TABLE : μμ ν΄λμ€λ₯Ό νλλ₯Ό ν
μ΄λΈλ‘ λ³ν
- @DiscriminatorColumn(name="DTYPE") : λΆλͺ¨ ν΄λμ€μ μ μΈ. νμ ν΄λμ€μ κ΅¬λΆ μ»¬λΌ μμ±. default = DTYPE
- @DiscriminatorValue(name="μ΄λ¦") : μμ ν΄λμ€μ μ μΈ. μνΌνμ μ κ΅¬λΆ μ»¬λΌμ μ μ₯ν κ°μ μ§μ
- TABLE_PER_CLASS : νμ ν
μ΄λΈ κ°κ°μ ν
μ΄λΈλ‘ λ³ν
- β»μ£Όμ) μ΄λ, @Id @GenerateValue(strategy=GenerationType.IDENTITY) μΌ κ²½μ° μ€λ₯ λ°μ
- κ° μμ νμ μ λν μ°¨μ΄λ μμ λ§ν¬μ μ μ 리λμ΄ μμΌλ μ°Έκ³ νμ(https://ict-nroo.tistory.com/128)
- JOINED : μμ/νμ ν΄λμ€λ₯Ό κ°κ°μ ν
μ΄λΈλ‘ λ³ν
- InheritanceType μ’
λ₯(XXX) - default=SINGLE_TABLE
'λ°±μλ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ° κΈ°λ³Έ] 0. μ€νΈλ¦Ό Streams (0) | 2023.07.27 |
---|---|
[JAVA/Intellij] νλ‘μ νΈ Github μ°λ (0) | 2023.05.15 |
[JAVA-jdbc] Window H2 Database μ€μΉ/μλ² μ€ν (0) | 2023.05.11 |