-
[JPA] κ° νμBack-end/JPA 2022. 4. 28. 10:15
π JPAμ λ°μ΄ν° νμ λΆλ₯ (2κ°μ§)
1) μν°ν° νμ
- @Entityλ‘ μ μνλ κ°μ²΄
- λ°μ΄ν°κ° λ³ν΄λ μλ³μλ‘ μ§μν΄μ μΆμ μ΄ κ°λ₯νλ€.
- 곡μ κ° κ°λ₯νλ€.
- ex) νμ μν°ν°μ ν€λ λμ΄ κ°μ λ³κ²½ν΄λ μλ³μλ‘ μΈμ κ°λ₯
2) κ° νμ
- int, Integer, Stringμ²λΌ λ¨μν κ°μΌλ‘ μ¬μ©νλ μλ° κΈ°λ³Έ νμ μ΄λ κ°μ²΄
- μλ³μκ° μκ³ κ°λ§ μμΌλ―λ‘ λ³κ²½μ μΆμ μ΄ λΆκ°νλ€.
- 곡μ λλ©΄ μλλ κ°μ΄λ€. (볡μ¬ν΄μ μ¬μ©, λΆλ³ κ°μ²΄λ‘ μμ±)
- μλͺ μ£ΌκΈ°λ₯Ό μν°ν°μ μμ‘΄νλ€.
- ex) μ«μ 100μ 200μΌλ‘ λ³κ²½νλ©° μμ ν λ€λ₯Έ κ°μΌλ‘ λ체
π κ° νμ λΆλ₯ (3κ°μ§)
κΈ°λ³Έκ° νμ , μλ² λλ νμ , 컬λ μ κ° νμ μ΄ 3κ°μ§λ‘ λΆλ₯λλ€.
π κΈ°λ³Έκ° νμ
- μ’ λ₯: μλ° κΈ°λ³Έ νμ (int, double), λνΌ ν΄λμ€(Integer, Long), String
- μλͺ μ£ΌκΈ°λ₯Ό μν°ν°μ μμ‘΄νλ€. ex) νμμ μμ νλ©΄ μ΄λ¦, λμ΄ νλλ ν¨κ» μμ
- 곡μ νλ©΄ μλλ€. ex) νΉμ νμ μ΄λ¦ λ³κ²½μ λ€λ₯Έ νμμ μ΄λ¦λ ν¨κ» λ³κ²½λλ©΄ μλ¨
μΆκ°)
int, double κ°μ μλ° κΈ°λ³Έ νμ (primitive type)μ 곡μ λ μ μκ³ , νμ κ°μ 볡μ¬νλ€.
Integer κ°μ λνΌ ν΄λμ€ or String κ°μ μ°Έμ‘° ν΄λμ€λ 곡μ λ κ°λ₯νμ§λ§ κ°μ λ³κ²½ν μ μλ€.
π μλ² λλ νμ (λ³΅ν© κ° νμ )
μ£Όλ‘ κΈ°λ³Έ κ° νμ μ λͺ¨μμ μλ‘μ΄ κ° νμ μΌλ‘ μ μνκΈ° λλ¬Έμ λ³΅ν© κ° νμ μ΄λΌκ³ λ νλ€.
βΆ μ¬μ©λ²
- @Embeddable: κ° νμ μ μ μνλ κ³³μ νμ
- @Embedded: κ° νμ μ μ¬μ©νλ κ³³μ νμ
*μΆκ°ν λ΄μ©
μλ² λλ νμ μ κ²½μ° 'κΈ°λ³Έ μμ±μκ° νμ'λΌκ³ νλλ° κ·Έ μ΄μ λ?
βΆ μ₯μ
- μ¬μ¬μ©ν μ μκ³ , λμ μμ§λλ₯Ό κ°μ§λ€.
- Period.isWork()μ²λΌ ν΄λΉ κ° νμ λ§ μ¬μ©νλ λ©μλλ₯Ό λ§λ€ μ μλ€.
- μλ² λλ νμ μ ν¬ν¨ν λͺ¨λ κ° νμ μ, κ° νμ μ μμ ν μν°ν°μ μλͺ μ£ΌκΈ°λ₯Ό μμ‘΄νλ€.
βΆ μλ² λλ νμ κ³Ό ν μ΄λΈ 맀ν
- μλ² λλ νμ μ μν°ν°μ νλμ κ°μΌ λΏμ΄λ―λ‘, μλ² λλ νμ μ¬μ© μ κ³Ό νμ 맀ννλ ν μ΄λΈμ ννλ λμΌνλ€.
- λ§μ½ μλ² λλ νμ μ κ°μ΄ nullμ΄λ©΄ 맀νλλ 컬λΌκ°λ λͺ¨λ nullμ΄ λλ€.
βΆ μΆκ°) @AttributeOverride: μμ± μ¬μ μ
- λ§μ½ νλμ μν°ν°μμ κ°μ μλ² λλ νμ μ 2κ° μ¬μ©νλ©΄, 컬λΌλͺ μ΄ μ€λ³΅λμ΄ μ€λ₯κ° λ°μνλ€.
- @AttributeOverrides, @AttributeOverrideλ₯Ό μ¬μ©ν΄ 컬λΌλͺ μμ±μ μ¬μ μνμ¬(DB ν μ΄λΈμ μ μ₯λ 컬λΌλͺ μ λ€λ₯΄κ² ν¨) ν΄κ²°ν μ μλ€.
π κ° νμ κ³Ό λΆλ³ κ°μ²΄
βΆ κ° νμ 곡μ μ°Έμ‘° vs. 볡μ¬
μμ κ°μ΄ μλ² λλ νμ κ°μ κ° νμ μ μ¬λ¬ μν°ν°μμ 곡μ νλ©΄ κ° λ³κ²½μ ν΄λΉ κ° νμ μ μ°Έμ‘°νκ³ μλ λͺ¨λ μν°ν°κ° λ³κ²½λ κ°μ κ°μ§κ² λλ―λ‘ μννλ€.
κ° νμ μ μ€μ κ°μ²΄λ₯Ό 곡μ νλ κ²μ μννλ―λ‘, κ°(μΈμ€ν΄μ€)λ₯Ό 볡μ¬ν΄μ μ¬μ©ν΄μΌ νλ€.
βΆ κ°μ²΄ νμ μ νκ³
- νμ κ°μ 볡μ¬ν΄μ μ¬μ©νλ©΄ 곡μ μ°Έμ‘°λ‘ μΈν΄ λ°μνλ μν©μ νΌν μ μλ€.
- μλ° κΈ°λ³Έ νμ μ κ°μ λμ νλ©΄ κ°μ 볡μ¬νμ¬ μ¬μ©νλ€.
- μ΄μ λ¬λ¦¬ μλ² λλ νμ μ²λΌ μ§μ μ μν κ° νμ μ μλ°μ κΈ°λ³Έ νμ μ΄ μλλΌ κ°μ²΄ νμ μ΄λ―λ‘ μλ° κΈ°λ³Έ νμ μ²λΌ μλμΌλ‘ κ°μ 볡μ¬νμ¬ μ¬μ©νλ κ²μ΄ μλλ―λ‘, 곡μ μ°Έμ‘°λ₯Ό λ§μ λ°©λ²μ΄ μλ€.
βΆ λΆλ³ κ°μ²΄
- λΆλ³ κ°μ²΄ : μμ± μμ μ΄ν μ λ κ°μ λ³κ²½ν μ μλ κ°μ²΄
- μμ κ°μ κ°μ²΄ νμ μ νκ³λ‘ λ±μ₯ν κ°λ μ΄ λΆλ³ κ°μ²΄μ΄λ€. 곡μ μ°Έμ‘°λ₯Ό λ§μ μ μμΌλ κ°μ²΄ νμ μ μμ ν μ μκ² λ§λ€μ΄ μ€λ₯ μν©μ μ°¨λ¨νλ κ²μ΄λ€.
- μ¦, κ° νμ μ λΆλ³ κ°μ²΄(immutable object)λ‘ μ€κ³ν΄μΌ νλ€.
- μμ±μλ‘λ§ κ°μ μ€μ νκ³ , Setterλ₯Ό λ§λ€μ§ μλλ€.
- κ°μ μμ νλ €λ©΄, μμ±μλ‘ μμ λ κ°μ κ°μ§ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±ν΄ λ£μ΄μ€μΌ νλ€.
*μΆκ°ν λ΄μ©
Integer, Stringμ μλ°κ° μ체μ μΌλ‘ λΆλ³ κ°μ²΄λ‘ μ€μ ν΄λμλ€.
π κ° νμ μ λΉκ΅
κ° νμ μ κ²½μ° μΈμ€ν΄μ€κ° λ¬λΌλ κ·Έ μμ κ°μ΄ κ°μΌλ©΄ κ°μ κ²μ΄λΌκ³ κ°μ£Όν΄μΌ νλ€.
λμΌμ±(identity) λΉκ΅ : μΈμ€ν΄μ€μ μ°Έμ‘° κ°μ λΉκ΅, == μ¬μ©
λλ±μ±(equivalence) λΉκ΅ : μΈμ€ν΄μ€μ κ°μ λΉκ΅, equals() μ¬μ©
- κ° νμ μ equals()λ₯Ό μ¬μ©ν΄ λλ±μ± λΉκ΅λ₯Ό ν΄μΌνλ€.
- κ° νμ μ equals()λ₯Ό νμμ μ€λ²λΌμ΄λ©ν΄μΌ νλ€.
*μΆκ°ν λ΄μ©
κ° νμ μ equals() λ©μλ μ€λ²λΌμ΄λ© (Object ν΄λμ€μ equals())
π 컬λ μ κ° νμ
- κ° νμ μ νλ μ΄μ μ μ₯ν λ μ¬μ©νλ€.
- @ElementCollection, @CollectionTableλ₯Ό μ¬μ©νλ€.
- λ°μ΄ν°λ² μ΄μ€λ 컬λ μ μ νλμ ν μ΄λΈμ μ μ₯ν μ μμΌλ―λ‘, 컬λ μ μ μ₯μ μν λ³λμ ν μ΄λΈμ΄ νμνλ€.
- 컬λ μ κ° νμ λ ν΄λΉ κ°μ κ°μ§κ³ μλ μν°ν°μ μλͺ μ£ΌκΈ°κ° κ²°μ λλ€.
- κ° νμ μ μν°ν°μ λ€λ₯΄κ² μλ³μ κ°λ μ΄ μκΈ° λλ¬Έμ, κ° νμ 컬λ μ μ λ³κ²½ μ¬νμ΄ λ°μνλ©΄, ν΄λΉ μν°ν°μ μ°κ΄λ λͺ¨λ λ°μ΄ν°λ₯Ό μμ νκ³ , κ° νμ 컬λ μ μ μλ νμ¬μ κ°μ λͺ¨λ λ€μ μμ±ν΄ μ μ₯νλ€.
- μμ μμμμμ²λΌ κ° νμ 컬λ μ μ 맀ννλ ν μ΄λΈμ λͺ¨λ 컬λΌμ λ¬Άμ΄μ PKλ₯Ό ꡬμ±νλ―λ‘, null μ λ ₯X & μ€λ³΅ μ μ₯X
⢠컬λ μ κ° νμ λμ
- μν©μ λ°λΌ 컬λ μ κ° νμ λμ μΌλλ€ κ΄κ³λ‘ μμ νλ κ²μ κ³ λ €ν΄λ΄μΌ νλ€.
- μΌλλ€ κ΄κ³λ₯Ό μν μν°ν°λ₯Ό λ§λ€κ³ , ν΄λΉ μν°ν°κ° κ° νμ μ κ°μ§λλ‘ νλ€.
- μμμ± μ μ΄(CASCADE)μ κ³ μ κ°μ²΄ μ κ±° μ€μ μ νμ¬ κ° νμ 컬λ μ μ²λΌ μ¬μ©μ΄ κ°λ₯νλ€.
'Back-end > JPA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JPA] νλ‘μμ μ°κ΄κ΄κ³ κ΄λ¦¬ (0) 2022.04.28 [JPA] μμκ΄κ³ 맀νκ³Ό @MappedSuperclass (0) 2022.04.27 [JPA] μ°κ΄κ΄κ³ 맀ν (0) 2022.04.14 [JPA] μν°ν° 맀ν (0) 2022.04.11 [JPA] λ±μ₯ λ°°κ²½, μ¬μ© μ΄μ , κ°λ¨ ꡬλ λ°©μ (0) 2022.03.31