Home
>
Spring
>
π[Spring] JPA μ°κ΄κ΄κ³μ λν μΆκ°μ μΈ κΈ°λ₯λ€μλ 무μμ΄ μμκΉμ? - 1:1 κ΄κ³
Spring
Framework
π[Spring] JPA μ°κ΄κ΄κ³μ λν μΆκ°μ μΈ κΈ°λ₯λ€μλ 무μμ΄ μμκΉμ? - 1:1 κ΄κ³
1οΈβ£ 1:1 κ΄κ³.
- νλμ μν°ν°κ° λ€λ₯Έ νλμ μν°ν°μ 1λ 1λ‘ λ§€νλλ κ΄κ³λ₯Ό μλ―Έν©λλ€.
- μλ₯Ό λ€μ΄, Userμ UserProfile μν°ν°κ° 1:1 κ΄κ³μ μλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€.
- κ° Userλ νλμ UserProfileλ§μ κ°μ§λ©°, κ° UserProfileμ νλμ Userμλ§ μ°κ²°λ μ μμ΅λλ€.
- 1:1 κ΄κ³λ₯Ό JPAμμ 맀νν λλ 보ν΅
@OneToOne
μ΄λ
Έν
μ΄μ
μ μ¬μ©ν©λλ€.
- JPAμμλ
@JoinColumn
μ μ΄μ©ν΄ λ μν°ν°λ₯Ό μ°κ²°νλ μΈλ ν€λ₯Ό μ§μ ν μλ μμ΅λλ€.
π μμ μ½λ.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToOne
@JoinColumn(name = "user_profile_id") // μΈλ ν€ μ€μ
private UserProfile userProfile;
// getter, setter λ±
}
@Entity
public class UserProfile {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String address;
private String phoneNumber;
@OneToOne(mappedBy = "userProfile") // μ°κ΄κ΄κ³ μ£ΌμΈμ΄ μλμ λͺ
μ
private User user;
// getter, setter λ±
}
π μ€λͺ
.
- User μν°ν°λ UserProfile μν°ν°μ 1:1 κ΄κ³λ‘, userProfile νλλ₯Ό ν΅ν΄ UserProfileμ μ°Έμ‘°ν©λλ€.
-
@JoinColumn
μ User μν°ν° ν
μ΄λΈμ user_profile_idλΌλ μΈλ ν€ μ»¬λΌμ μμ±νμ¬ λ μν°ν°λ₯Ό μ°κ²°ν©λλ€.
- USerProfile μν°ν°μμλ mappedBy μμ±μ μ¬μ©νμ¬ μλ°©ν₯ κ΄κ³μμμ μ°κ΄ κ΄κ³μ μ£ΌμΈμ User μν°ν°λ‘ μ€μ ν©λλ€.
2οΈβ£ λ¨λ°©ν₯κ³Ό μλ°©ν₯.
1οΈβ£ λ¨λ°©ν₯ 1:1 κ΄κ³.
- νλμ μν°ν°μμλ§ λ€λ₯Έ μν°ν°λ₯Ό μ°Έμ‘°ν©λλ€.
2οΈβ£ μλ°©ν₯ 1:1 κ΄κ³.
- λ μν°ν°κ° μλ‘λ₯Ό μ°Έμ‘°ν μ μμΌλ©°, mappedByλ₯Ό μ¬μ©νμ¬ μ£ΌμΈμ λͺ
μν©λλ€.
3οΈβ£ λ§λ¬΄λ¦¬.
- 1:1 κ΄κ³λ λ°μ΄ν°λ² μ΄μ€μμμ ν
μ΄λΈμ΄ μ λΆλ¦¬λκ³ μ±λ₯μ΄ μ μ ν μ μ§λμ΄μΌ ν λ μ μ©νκ² μ¬μ©λ©λλ€.