์ฐ๊ด๊ด๊ณ ์ธ๋ํค ์ ์ฅํ ๋ Entity๋ก ํด์ฃผ๋ ์ด์
์๋ฌธ์
@ManyToOne์ ๋ค๋์ผ ๊ด๊ณ์์ ์ธ๋ํค๋ฅผ ์ ์ฅํด ์ค ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฐธ์กฐํ๋ ๊ฐ์ฒด์ Entity ๊ทธ ์์ฒด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์ดํด๋์ง ์์๋ค.
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class OrderedProduct {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Integer id;
@ManyToOne
@JoinColumn(name="Product_id")
Product product;
@ManyToOne
@JoinColumn(name="Orders_id")
Orders order;
}
public void createOrder(String impUid) {
ordersRepository.save(Orders.builder()
.impUid(impUid)
.user(User.builder().id(1L).email("test01@test.com").build())
.build());
orderedProductRepository.save(OrderedProduct.builder()
.order(Orders.builder().build())
.product(Product.builder().id(1).build())
.build());
}
์์ ๊ฐ์ด ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋ ๋ฐ,
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ธํด๋ณด๋ฉด Orders์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ์ง๋ง ์ฐธ์กฐํ๋ ๊ฒ์ Orders์ ๊ธฐ๋ณธํค์ธ orders_id ๋ฟ์ด๊ณ ,
Product์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ์ง๋ง ์ฐธ์กฐํ๋ ๊ฒ์ Product์ ๊ธฐ๋ณธํค์ธ product_id ๋ฟ์ด๋ค.
์์ ์ ์ฅํด์ค ๋ ์ธ๋ํค๊ฐ๋ง ์ ์ฅํ๋ ๊ฒ ํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํด์ ์๋ฌธ์ด ๋ค์๋ค.
์ด์
์ด์ ๋ถํฐ ๋งํ์๋ฉด, JPA๋ ๊ธฐ๋ณธํค๋ฅผ ์ค์ฌ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์์์ ์๊ฐํ ๋ฐฉ์์ ๋๋ฌด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๋ก ์ ๊ทผํด์ ์๊ฐํ๋ ๊ฑฐ๋ค.
JPA๋ ๊ธฐ๋ณธํค๋ฅผ ์ค์ฌ์ผ๋ก ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ๋งคํ์ ์ํํ๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ์ฒด ์งํฅ์ ์ธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐ์ํ ์ ์๋๋ก ์ง์ํ๋ค.
๋ฐ๋ผ์ ๊ฐ์ฒด์ ํ ์ด๋ธ ๊ฐ์ ๋งคํ ๊ท์น์ ์ ์ดํดํ๊ณ ์ ์ ํ ๊ธฐ๋ณธํค ์ ๋ต์ ์ ํํ์ฌ ์ฌ์ฉํจ์ผ๋ก์จ ํจ์จ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ค.