๐ ์ค๋์ ํ์ต ํค์๋
- @OneToOne
๐ฅ @OneToOne
: @OneToOne ์ ๋ํ ์ด์ ์ 1:1 ๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
: ๊ณ ๊ฐ Entity์ ์์ Entity๊ฐ 1:1 ๊ด๊ณ๋ผ ๊ฐ์ ํ์ฌ ๊ด๊ณ๋ฅผ ๋งบ์ด๋ด ๋๋ค.
โ๏ธ ๋จ๋ฐฉํฅ ๊ด๊ณ
- ์ธ๋ํค์ ์ฃผ์ธ ์ ํ๊ธฐ
: Entity์์ ์ธ๋ํค์ ์ฃผ์ธ์ ์ผ๋ฐ์ ์ผ๋ก N์ ๊ด๊ณ์ธ Entity์ด์ง๋ง 1:1 ๊ด๊ณ์์๋ ์ธ๋ํค์ ์ฃผ์ธ์ ์ง์ ์ง์ ํด์ผํฉ๋๋ค.
: ์ธ๋ํค ์ฃผ์ธ๋ง์ด ์ธ๋ํค๋ฅผ ๋ฑ๋ก, ์์ ์ญ์ ํ ์ ์์ผ๋ฉฐ, ์ฃผ์ธ์ด ์๋ ์ชฝ์ ์ค์ง ์ธ๋ํค๋ฅผ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํฉ๋๋ค.
: @JoinColumn()์ ์ธ๋ํค์ ์ฃผ์ธ์ด ํ์ฉํ๋ ์ ๋ํ ์ด์ ์ ๋๋ค.
- ์ปฌ๋ผ๋ช , null ์ฌ๋ถ, unique ์ฌ๋ถ ๋ฑ์ ์ง์ ํ ์ ์์ต๋๋ค.
- ์์ Entity๊ฐ ์ธ๋ํค์ ์ฃผ์ธ์ธ ๊ฒฝ์ฐ
// ์์
@Entity
@Table(name = "food")
public class Food {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@OneToOne
@JoinColumn(name = "user_id")
private User user;
}
// ๊ณ ๊ฐ
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
โ๏ธ ์๋ฐฉํฅ ๊ด๊ณ
: ์๋ฐฉํฅ ๊ด๊ณ์์ ์ธ๋ํค์ ์ฃผ์ธ์ ์ง์ ํด ์ค ๋ mappedBy ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
: mappedBy์ ์์ฑ๊ฐ์ ์ธ๋ ํค์ ์ฃผ์ธ์ธ ์ํ Entity์ ํ๋๋ช ์ ์๋ฏธํฉ๋๋ค.
๐จ ์ฃผ์!
1.
- ์ธ๋ํค์ ์ฃผ์ธ์ธ Entity์์ @JoinColumn() ์ ๋ํ ์ด์ ์ ์ฌ์ฉํ์ง ์์๋ default ์ต์ ์ด ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ ์๋ต๊ฐ๋ฅ
- ๋ค๋ง 1:N ๊ด๊ณ์์ ์ธ๋ํค์ ์ฃผ์ธ Entity๊ฐ @JoinColumn() ์ ๋ํ ์ด์ ์ ์๋ตํ๋ค๋ฉด JPA๊ฐ ์ธ๋ํค๋ฅผ
- ์ ์ฅํ ์ปฌ๋ผ์ ํ์ ํ ์ ์์ด์ ์๋ํ์ง ์์ ์ค๊ฐ ํ ์ด๋ธ์ด ์์ฑ๋ฉ๋๋ค.
- ๋ฐ๋ผ์ ์ธ๋ํค์ ์ฃผ์ธ Entity์์ @JoinColumn() ์ ๋ํ ์ด์ ์ ํ์ฉํ๋๊ฒ ์ข์ต๋๋ค.
2.
- ์๋ฐฉํฅ ๊ด๊ณ์์ mappedBy ์ต์ ์ ์๋ตํ ๊ฒฝ์ฐ JPA๊ฐ ์ธ๋ํค์ ์ฃผ์ธ Entity๋ฅผ ํ์ ํ ์ ์์ด
- ์๋ํ์ง ์์ ์ค๊ฐ ํ ์ด๋ธ์ด ์์ฑ๋๊ธฐ ๋๋ฌธ์, ๋ฐ๋์ ์ค์ ํด์ฃผ๋๊ฒ ์ข์ต๋๋ค.
- ์์ Entity๊ฐ ์ธ๋ํค์ ์ฃผ์ธ์ธ ๊ฒฝ์ฐ
// ์์
@Entity
@Table(name = "food")
public class Food {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@OneToOne
@JoinColumn(name = "user_id")
private User user;
}
// ๊ณ ๊ฐ
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToOne(mappedBy = "user")
private Food food;
}
๐ ์ค๋์ ํ๊ณ
JPA์ ๊ธฐ๋ณธ๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ค์ ์๊ธฐ!
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
03/12(ํ) ๋ด์ผ๋ฐฐ์์บ ํ Java 54์ผ์ฐจ TIL - QueryDSL (0) | 2024.03.12 |
---|---|
03/11(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 53์ผ์ฐจ TIL - SOLID (0) | 2024.03.12 |
03/07(๋ชฉ) ๋ด์ผ๋ฐฐ์์บ ํ Java 51์ผ์ฐจ TIL - Cascade, orphanRemoval (0) | 2024.03.07 |
03/06(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 50์ผ์ฐจ TIL - ORM (0) | 2024.03.06 |
03/05(ํ) ๋ด์ผ๋ฐฐ์์บ ํ Java 49์ผ์ฐจ TIL - DAO, DTO, VO (0) | 2024.03.05 |