Entity κ°μ κ΄κ³
Entityλ€ κ°μ κ΄κ³
μΌλλ€(One-to-Many), λ€λμΌ(Many-to-One), λ€λλ€(Many-to-Many) κ΄κ³μ λν΄ μμ보μ.
κ°μ²΄, κ΄κ³, μμ±
λ°μ΄ν°λ² μ΄μ€μ κ°λ μ κ΅¬μ± μμλ κ°μ²΄(Entity), κ΄κ³(Relationship), μμ±(Attriube) μΈ κ°μ§λ‘ μ΄λ£¨μ΄μ Έ μλ€.
μ¬κΈ°μ κ°μ²΄λ λ°μ΄ν°λ² μ΄μ€μμ λ€λ£¨λ μ¬λ¬Ό, μ¦ λμμ λ§νλ κ²μ΄κ³ , κ΄κ³λ κ·Έ μ¬λ¬Όλ€λΌλ¦¬μ μ°κ΄μ μκΈ°νλ κ²μ΄κ³ , μμ±μ κ·Έ μ¬λ¬Όλ€μ΄ κ°μ§κ³ μλ κ°μμ νΉμ±μ λ§νλ μ©μ΄μ΄λ€.
νμλ€μ΄ κΈμ μμ±ν μ μλ κ²μν μΉμ λ§λ λ€κ³ μκ°ν΄λ³΄μ.
μ°μ μ μΌλ‘ νμμ΄ νμνκ³ , κ·Έ νμμ΄ μΈ μ μλ κ²μκΈμ΄ νμνλ€.
κ·Έλ¬λ―λ‘ μ΄λ νμν κ°μ²΄(Entity)λ νμ(User), κ²μκΈ(Board)μΈ λ κ°μ κ°μ²΄κ° νμνλ€.
λ λ κ°μ²΄μ μ¬μ΄λ₯Ό νμΈνλ©° κ΄κ³μ λν΄ μ€λͺ
ν μ μλ€.
ν λͺ
μ νμμ μ¬λ¬ κ°μ§ κ²μκΈμ μΈ μ μμ§λ§, κ²μκΈμ κ²μκΈμ΄ μ΄ νμμ΄ μ¬λ¬ λͺ
μ΄ λ μ μκ³ μ€μ§ ν λͺ
μ νμλ§ κ²μκΈμ μμ±μκ° λ μ μλ€.
κ·Έλ¬λ―λ‘ νμκ³Ό κ²μκΈμ κ΄κ³(Relationship)λ μΌλλ€(One-to-Many, 1:m) κ΄κ³
μμ μ μ μλ€.
λν λ°λλ‘ κ²μκΈκ³Ό νμμ κ΄κ³(Relationship)λ λ€λμΌ(Many-to-One, 1:m) κ΄κ³
μμ μ μ μλ€.
μ΄μΈμλ λ€λλ€(Many-to-Many)
κ΄κ³λ μλ€.
λ§μ§λ§μΌλ‘ νμ κ°μ²΄μ κ²μκΈ κ°μ²΄κ° κ°κ° κ°μ§κ³ μλ νΉμ±μ μμ±μ΄λΌκ³ ν μ μλ€.
νμμ κ²½μ°μ νμμ νμ λ²νΈ, μ΄λ¦, λΉλ°λ²νΈ, μ΄λ©μΌ λ±μ΄ μμ±μ΄λΌκ³ ν μ μκ³ , κ²μλ¬Όμ κ²½μ°μ κ²μλ¬Ό λ²νΈ, κ²μλ¬Ό μ λͺ©, κ²μλ¬Ό λ΄μ©, κ²μλ¬Ό μ‘°ν μ λ±μ΄ μμ±μ΄λΌκ³ ν μ μλ€.
JPAμ κ΄κ³ μ΄λ Έν μ΄μ
μμ μμλ₯Ό λ°νμΌλ‘ Userμ Board Modelμ΄ μλ€κ³ νμ.
κ²μνμ λΆλ¬μ¬ λ, νμ κ·Έ κ²μνμ μ΄ μμ±μμ μ 보λ₯Ό κ°μ ΈμμΌ νλ―λ‘, κ²μνμμ κ΄κ³μ λν μ΄λ Έν μ΄μ μ λΆμ¬μ€λ€.
Board.java
// ...
@ManyToOne
@JoinColumn(name = "userId")
private User user;
// ...
ν λͺ
μ Userκ° λ€μμ κ²μνμ μμ±ν μ μμΌλ―λ‘ κ²μνμ μ
μ₯μμ ManyToOne
μ΄λ
Έν
μ΄μ
μ λΆμ¬μ£Όμ΄μΌ νλ€.Many = Board, One = User
μ κ΄κ³μ΄λ€.
User κ²μνκ³Ό Joinμ΄ νμνλ―λ‘ @JoinColumn(name = "userId")
λ λΆμ¬μ€λ€.
μλ DBλ μ€λΈμ νΈλ₯Ό μ μ₯ν μ μμ΄μ FKλ₯Ό μ¬μ©νμ§λ§, μλ°λ μ€λΈμ νΈλ₯Ό μ μ₯ν μ μμΌλ―λ‘ User μ€λΈμ νΈλ₯Ό λΆμ¬μ€λ€.
μ΄λ° κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ κ°μ²΄μ§ν₯ μΈμ΄μ ν¨λ¬λ€μ μ°¨μ΄λ₯Ό JPAκ° ν΄κ²°ν΄ μ€λ€.