π[Spring] JPAμ μ΄λ
Έν
μ΄μ
- @JoinColumn
-
@JoinColumn
μ JPAμμ λ μν°ν° κ°μ μ°κ΄κ΄κ³λ₯Ό λ§€νν λ μΈλ ν€(Foreign Key) 컬λΌμ μ€μ νκΈ° μν΄ μ¬μ©νλ μ΄λ Έν μ΄μ μ λλ€. -
@JoinColumn
μ κ΄κ³κ° μ€μ λλ ν μ΄λΈμ μΈλ ν€(Foreign Key)λ₯Ό μ μνκ³ , ν΄λΉ μΈλ ν€(Foreign Key) 컬λΌμ΄ μ°κ΄λ μν°ν°λ₯Ό μ°Έμ‘°νκ² ν©λλ€.
1οΈβ£ @JoinColumn
μ μ£Όμ μμ±.
-
name
- μΈλ ν€(Foreign Key) 컬λΌμ μ΄λ¦μ μ§μ ν©λλ€.
- μ§μ νμ§ μμΌλ©΄ κΈ°λ³Έμ μΌλ‘ μ°Έμ‘°νλ μν°ν°μ νλλͺ λλ νλ‘νΌν°λͺ + _id νμμΌλ‘ μ΄λ¦μ΄ μ€μ λ©λλ€.
- μΈλ ν€(Foreign Key) 컬λΌμ μ΄λ¦μ μ§μ ν©λλ€.
-
referencedColumnName
- μΈλ ν€(Foreign Key)κ° μ°Έμ‘°ν λμ μν°ν°μ 컬λΌλͺ
μ μ§μ ν©λλ€.
- κΈ°λ³Έμ μΌλ‘ μ°Έμ‘° μν°ν°μ κΈ°λ³Έ ν€κ° μ¬μ©λ©λλ€.
- μΈλ ν€(Foreign Key)κ° μ°Έμ‘°ν λμ μν°ν°μ 컬λΌλͺ
μ μ§μ ν©λλ€.
-
nullable
- μΈλ ν€(Foreign Key) 컬λΌμ΄ NULLμ νμ©ν μ§ μ¬λΆλ₯Ό μ§μ ν©λλ€.
- κΈ°λ³Έκ°μ trueμ΄λ©°, falseλ‘ μ€μ νλ©΄ λ°λμ κ°μ΄ μμ΄μΌ ν©λλ€.
- μΈλ ν€(Foreign Key) 컬λΌμ΄ NULLμ νμ©ν μ§ μ¬λΆλ₯Ό μ§μ ν©λλ€.
-
unique
- μΈλ ν€(Foreign Key) 컬λΌμ΄ μ μΌν κ°μΈμ§ μ€μ ν©λλ€.
- κΈ°λ³Έκ°μ falseμ λλ€.
- μΈλ ν€(Foreign Key) 컬λΌμ΄ μ μΌν κ°μΈμ§ μ€μ ν©λλ€.
-
insertable, updatable
- μΈλ ν€(Foreign Key) 컬λΌμ κ°μ΄ μ½μ /μ λ°μ΄νΈ κ°λ₯νμ§ μ€μ ν©λλ€.
2οΈβ£ @JoinColumn
μμ.
-
ν(Team)κ³Ό νμ(User)κ°μ λ€λμΌ(N:1) κ΄κ³μμ User μν°ν°μ team νλλ₯Ό ν΅ν΄ Team μν°ν°μμ κ΄κ³λ₯Ό μ€μ νλ©°,
@JoinColumn
μ μ¬μ©ν΄ μΈλ ν€(Foreign Key)λ₯Ό λ§€νν μ μμ΅λλ€.
```java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;private String name;
@ManyToOne
@JoinColumn(name = βteam_idβ) // μΈλ ν€ μ»¬λΌ μ€μ
private Team team;// getter, setter
}
@Entity
public class Team {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// getter, setter } ```
π μ€λͺ .
- User μν°ν°μμ team νλλ
@ManyToOne
κ΄κ³λ₯Ό ν΅ν΄ Team μν°ν°μ μ°κ²°λ©λλ€. -
@JoinColumn(name = "team_id")
λ₯Ό μ¬μ©νμ¬ User ν μ΄λΈμ team_idλΌλ μΈλ ν€(Foreign Key) 컬λΌμ΄ μμ±λλλ‘ μ§μ νμ΅λλ€.- μ΄ μ»¬λΌμ Team μν°ν°μ κΈ°λ³Έ ν€ idλ₯Ό μ°Έμ‘°νκ² λ©λλ€.
3οΈβ£ @JoinColumn
μ μ¬μ©ν μλ°©ν₯ κ΄κ³ μμ.
-
@JoinColumn
μ μλ°©ν₯ κ΄κ³μμλ μμ£Ό μ¬μ©λ©λλ€.- μλ₯Ό λ€μ΄, Userμ Team μν°ν°κ° μλ‘λ₯Ό μ°Έμ‘°νλ μλ°©ν₯ κ΄κ³λ‘ μ€μ ν μ μμ΅λλ€.
```java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = βteam_idβ)
private Team team;
} - μλ₯Ό λ€μ΄, Userμ Team μν°ν°κ° μλ‘λ₯Ό μ°Έμ‘°νλ μλ°©ν₯ κ΄κ³λ‘ μ€μ ν μ μμ΅λλ€.
@Entity
public class Team {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "team") // μ°κ΄κ΄κ³ μ£ΌμΈμ΄ μλμ λͺ
μ
private List<User> users = new ArrayList<>();
// getter, setter } ```
π μ€λͺ .
- User μν°ν°λ team_id 컬λΌμ ν΅ν΄ Team μν°ν°μ μ°κ²°λλ©°, μ΄ μΈλ ν€(Foreign Key)κ° κ΄κ³μ μ£ΌμΈμ΄ λ©λλ€.
- Team μν°ν°λ users νλλ₯Ό ν΅ν΄ User μν°ν°λ₯Ό μ°Έμ‘°νλ©°, mappedBy μμ±μ ν΅ν΄ μ°κ΄κ΄κ³ μ£ΌμΈμ΄ μλμ λͺ μνμ΅λλ€.
4οΈβ£ μμ½.
-
@JoinColumn
μ λ μν°ν° κ°μ κ΄κ³μμ μΈλ ν€λ₯Ό μ€μ νκΈ° μν΄ μ¬μ©λλ©°, μΈλ ν€ μ»¬λΌμ μ΄λ¦κ³Ό μμ±μ μ§μ ν μ μμ΅λλ€. - λ¨λ°©ν₯, μλ°©ν₯ κ΄κ³μμ λͺ¨λ μ¬μ©λλ©°, λͺ νν μΈλ ν€ μ€μ μ ν΅ν΄ λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈ κ°μ κ΄κ³λ₯Ό μ μν©λλ€.
- name. nullable, unique λ± λ€μν μμ±μ μ€μ ν΄ λ°μ΄ν°λ² μ΄μ€ 컬λΌμ μ μ½ μ‘°κ±΄μ μ‘°μ ν μ μμ΅λλ€.