#2 ํ๋ก์ ํธ ๊ธฐํ & ๋๋ฉ์ธ ์ค๊ณ
by JiwonDevํด๋น ๊ธ์ ๊น์ํ๋์ ์ค์ ์คํธ๋ง ๋ถํธ 1๋ฅผ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
#ํ๋ก์ ํธ๋ฅผ ๊ธฐํํด๋ณด์
ํ๋ฒํ ์ผํ๋ชฐ, HELLO SHOP์ ๋ง๋ค ์์ ์ด๋ค. ์ฌ๊ธฐ์๋ ํ์์ด ์ํ์ ์ฃผ๋ฌธํ ์ ์๊ณ ํ๋งค์๊ฐ ์ํ์ ๋ฑ๋กํ ์ ์๋ค. ์ฌ๊ธฐ์ ํ์ํ ๊ธฐ๋ฅ์ ํ๋ํ๋ ๋ชฉ๋ก์ผ๋ก ์ ๋ฆฌํด๋ณด์.
1. ๋๋ฉ์ธ | ํ์(Member) ์ํ(Item) ์ฃผ๋ฌธ(Order) |
2. ํ์๊ธฐ๋ฅ | ํ์ ๋ฑ๋ก ํ์ ์กฐํ |
3. ์ํ๊ธฐ๋ฅ | ์ํ ๋ฑ๋ก ์ํ ์์ ์ํ ์กฐํ |
4. ์ฃผ๋ฌธ๊ธฐ๋ฅ | ์ํ ์ฃผ๋ฌธ ์ฃผ๋ฌธ ๋ด์ญ ์กฐํ ์ฃผ๋ฌธ ์ทจ์ |
5. ์๊ตฌ์ฌํญ | ์ํ์ ์ฌ๊ณ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค. ์ํ์ ์ข ๋ฅ๋ ๋์, ์๋ฐ, ์ํ๊ฐ ์๋ค. ์ํ์ ์นดํ ๊ณ ๋ฆฌ๋ก ๊ตฌ๋ถํ ์ ์๋ค. ์ํ ์ฃผ๋ฌธ์ ๋ฐฐ์ก ์ ๋ณด๋ฅผ ์ ๋ ฅํ ์ ์๋ค. |
* ์๊ตฌ์ฌํญ์ ์์ธํ๊ฒ ์ ์ ์๋ก ์ค๊ณ ๋จ๊ณ์์ ์ ์ฐํ๊ฒ ๋ง๋ค๊ธฐ ์ฌ์์ง๋ค.
# ํ๋กํ ํ์ ์ ๋ง๋ค์ด๋ณด์
Kakao Oven์ด๋ ๊ธฐํ ํ๋กํ ํ์ ํด์ ์ด์ฉํ์ฌ ์ํ๋ ํ๋ฉด์ ๊ทธ๋ ค๋ณด์.
# ๋๋ฉ์ธ๊ณผ ํ ์ด๋ธ์ ์ค๊ณํด๋ณด์.
ํด๋น ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ๋ฅผ ๋ฐฐ์ฐ๋ฉด ์์ธํ๊ฒ ์๊ฒ๋๋ค. ์๋ฒฝํ๊ฒ ์ดํดํ์ง ๋ชปํ๋๋ผ๋ ์ผ๋จ ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์๋ณด์.
@ ๋๋ฉ์ธ์ ๊ด๊ณ์ ์ ์ฝ์กฐ๊ฑด
DB ํ ์ด๋ธ์ ๋ง๋ค๊ธฐ ์ํด ๊ด๊ณ์ ์ ์ฝ์กฐ๊ฑด์ ํ์ ํด๋ณด์.
- ํ์์ ์ฌ๋ฌ ์ํ์ ์ฃผ๋ฌธ ํ ์ ์๋ค. ํ๋ฒ ์ฃผ๋ฌธํ ๋ ์ฌ๋ฌ ์ํ์ ์ ํํ ์ ์๋ค. [ํ์<->์ฃผ๋ฌธ<->์ํ]์ด N:N ๊ด๊ณ์ด๋ฏ๋ก, ์ค๊ฐ์ '์ฃผ๋ฌธ ์ํ'์ด๋ผ๋ ์ํฐํฐ๋ฅผ ์ถ๊ฐํ์ฌ 1:N ๊ด๊ณ๋ก ๋ฐ๊ฟ์ฃผ์.
- ์ํ์ ๋์, ์๋ฐ, ์ํ๋ฑ ์ฌ๋ฌ๊ฐ์ง ์ข ๋ฅ๊ฐ ์์ง๋ง, ๊ณตํต ์์ฑ์ ์ฌ์ฉํ๋ฏ๋ก ์์ ๊ตฌ์กฐ๋ก ํํํ๋ค.
@ ๋๋ฉ์ธ ์ค๊ณ
- ํ์(Member): ๊ณ ์ ๊ฐ(id), ์ด๋ฆ(name), ์ฃผ์(Address), ์ฃผ๋ฌธ ๋ฆฌ์คํธ(orders)๋ฅผ ๊ฐ์ง๋ค.
- ์ฃผ์(Address): ๊ฐํ์ (=์๋ฒ ๋๋ ํ์ )์ด๋ค. ๋์(city), ๋๋ก๋ช (street), ์ฐํธ๋ฒํธ(zipcode)๋ฅผ ๊ฐ์ง๋ค.
- ๋ฐฐ์ก(Delivery): ๊ณ ์ ๊ฐ(id), ํด๋น ์ฃผ๋ฌธ(Order), ์ฃผ์(Address), ๋ฐฐ์ก์ํ(DeliveryStatus)๋ฅผ ๊ฐ์ง๋ค.
- ์นดํ
๊ณ ๋ฆฌ(Category): ๊ณ ์ ๊ฐ(id), ์นดํ
๊ณ ๋ฆฌ๋ช
(name), ํด๋น ์ํ๋ฆฌ์คํธ(items), ๋ถ๋ชจ ์นดํ
๊ณ ๋ฆฌ(Parent), ์์ ์นดํ
๊ณ ๋ฆฌ ๋ฆฌ์คํธ(child)๋ฅผ ๊ฐ์ง๋ค.
- ์ํ(Item): ๊ณ ์ ๊ฐ(id), ์ํ๋ช (name), ๊ฐ๊ฒฉ(Price), ์ฌ๊ณ ์๋(StockQuantity), ์นดํ ๊ณ ๋ฆฌ(List)๋ฅผ ๊ฐ์ง๋ค.
- ์ฃผ๋ฌธ์ํ(OrderItem): ๊ณ ์ ๊ฐ(id), ์ํ(item), ์ฃผ๋ฌธ(Order), ์ฃผ๋ฌธ๊ธ์ก(orderPrice), ์ฃผ๋ฌธ์๋(count)์ ๊ฐ์ง๋ค.
- ์ฃผ๋ฌธ(Order): ๊ณ ์ ๊ฐ(id), ์ฃผ๋ฌธ ํ์(Member), ์ฃผ๋ฌธ์ํ ๋ฆฌ์คํธ(OrderItems), ๋ฐฐ์ก์ ๋ณด(Delivery), ์ฃผ๋ฌธ๋ ์ง(OrderData), ์ฃผ๋ฌธ์ํ(OrderStatus)๋ฅผ ๊ฐ์ง๋ค.
์ด๋ ๊ฒ ์ ์๋ฅผ ์๋ฃํ๋ค๋ฉด, ๊ฐ์ฒด(์ํฐํฐ)๊ฐ์ ๊ด๊ณ๋ฅผ ํ ์ด๋ธ๋ก ํํํด๋ณด์.
@ [๊ฐ์ฒด ๊ด๊ณ -> DB ํ ์ด๋ธ] ์ฐ๊ด๊ด๊ณ ๋งคํ
์์์ ์ ์ํ ๋๋ฉ์ธ๋ค๋ก ํ ์ด๋ธ ๊ด๊ณ๋ฅผ ๋๋ต์ ์ผ๋ก ๊ทธ๋ ค๋ณด๊ณ , ๊ด๊ณ๋ง๋ค ํน์ง๊ณผ ๋ฌธ์ ์ ์ด ์๋์ง ๋ถ์ํด๋ณด์
* ํด๋น ์์ ๋ ๋์ด๋๋ฅผ ๋ฎ์ถ๊ธฐ์ํด ์ต๋ํ ๊ฐ๋จํ๊ฒ ํ ์ด๋ธ์ ์์ฑํ์๋ค. ๋ง์ฝ ์ค์ ์๋น์ค๋ฅผ ์๊ฐํ๋ค๋ฉด ๋ ๊น๊ฒ ์ดํด๋ณด์์ผํ๋ค. ํ๊ฐ์ง๋ง ์๋ฅผ ๋ค์ด๋ณธ๋ค๋ฉด ์ฃผ๋ฌธ<->ํ์๊ฐ์ ๊ด๊ณ์์ ๋จ์ํ๊ฒ ์๊ฐํ๋ฉด 'ํ์์ด ์ฃผ๋ฌธ์ ํ๋๊น, orders๋ฅผ ๊ฐ์ง๋ฉด ๋๊ฒ ๊ตฌ๋!' ๋ผ๊ณ ์ฐฉ๊ฐํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์ค์ ์๋น์ค๋ ํ์๊ณผ ์ฃผ๋ฌธ์ ๋๊ธ์ด๋ค.
๊ทธ ์ด์ ๋ ํ์์ ํตํด์ ์ฃผ๋ฌธ์ด ์ผ์ด๋๋ ๊ฒ์ด ์๋๋ผ ์ฃผ๋ฌธ์ ์์ฑํ ๋ ํ์์ด ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ๊ฐ๋ ์ ์ผ๋ก๋, ์ฟผ๋ฆฌ๋ฌธ์ ๋์๋ฐฉ์๋ ์ด๋ฌํ๋ค. ์ฆ ์ฌ์ค์ ํ์๊ณผ ์ฃผ๋ฌธ์ 1:N ๊ด๊ณ๋ ํ์๊ฐ ์๋ค. ๊ทธ ์ธ์๋ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ง๊ธ์ ์คํ๋ง ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ๊ฒ์ด์ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ด ์๋๋ฏ๋ก ์ผ๋จ ๋์ด๊ฐ๋๋ก ํ์.
- ํ์(Member) <-> ์ฃผ๋ฌธ(Orders)
1:N, N:1์ ์๋ฐฉํฅ ๊ด๊ณ์ด๋ค. ๋ฐ๋ผ์ ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ ์ ํด์ผ ํ๋๋ฐ, ์ธ๋ํค๊ฐ ์๋ ์ฃผ๋ฌธ์ ์ฃผ์ธ์ผ๋ก ์ ํ๋๊ฒ ์ข๋ค. ๊ทธ๋ฌ๋ฏ๋ก Order.member๋ฅผ ORDERS.MEMBER_ID ์ธ๋ํค์ ๋งคํํ๋ค. - ์ฃผ๋ฌธ(Orders) <-> ์ฃผ๋ฌธ์ํ(Order_Item)
์ฃผ๋ฌธ์ํ๊ณผ ์ฃผ๋ฌธ์ 1:N ์๋ฐฉํฅ ๊ด๊ณ์ด๋ค. ์ธ๋ ํค๊ฐ ์ฃผ๋ฌธ์ํ์ ์์ผ๋ฏ๋ก ์ฃผ๋ฌธ์ํ์ด ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ด๋ค. ์ฆ OrderItem.order๋ฅผ ORDER_ITEM.ORDER_ID์ ๋งคํํ๋ค. - ์ฃผ๋ฌธ์ํ(Order_Item)๊ณผ ์ํ(Item)
๋ค๋์ผ ๋จ๋ฐฉํฅ ๊ด๊ณ์ด๋ค. OrderItem.item ์ ORDER_ITEM.ITEM_ID ์ธ๋ ํค์ ๋งคํํ๋ค. - ์ฃผ๋ฌธ(Orders)๊ณผ ๋ฐฐ์ก(Delivery)
์ผ๋์ผ ์๋ฐฉํฅ ๊ด๊ณ์ด๋ค. Oder.delivery ๋ฅผ ORDERS.DELIVERY_ID ์ธ๋ํค์ ๋งคํํ๋ค. - ์นดํ
๊ณ ๋ฆฌ(Category)์ ์ํ(Item)
์นดํ ๊ณ ๋ฆฌ์ ์ํ๋ N:N ๊ด๊ณ๋ฏ๋ก, ๊ทธ๋ฆผ์ฒ๋ผ ์ํฐํฐ๋ฅผ ์ถ๊ฐ๋ก ์์ฑํด 1:N๊ด๊ณ๋ก ํ์ด์ผํ๋ค.
ํ์ง๋ง N:N ๊ด๊ณ๋ฅผ ์ฌ์ฉํ์ ๋ ์ด๋ ํ ๋ฌธ์ ์ ์ด ์๊ธฐ๋์ง ๋ณด์ฌ์ค๋ ค๊ณ ์ผ๋ถ๋ฌ @ManyToMany๋ฅผ ์ฌ์ฉํด ๋งคํํด๋ณด๋๋ก ํ๊ฒ ๋ค. ์ด ์์ ๋ฅผ ํตํด ์ ์ค๋ฌด์์ N:N ๊ด๊ณ๋ฅผ 1:N ์ผ๋ก ์ชผ๊ฐ์ผํ๋์ง ๋ฐฐ์๋ณด์.
์ ์ธ๋ ํค๊ฐ ์๋ ๊ณณ์ ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ผ๋ก ์ ํ๋์?
์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ ๋จ์ํ '์ธ๋ ํค๋ฅผ ๋๊ฐ ๊ด๋ฆฌํ๋๊ฐ?' ๋ฌธ์ ์ด์ง ๋น์ฆ๋์ค์ ์์ ๊ฐ๋ ์ด๋ผ๊ณ ์ฃผ์ธ์ผ๋ก ์ ํ๋ฉด ์๋๋ค.
์๋ฅผ ๋ค์ด ์๋์ฐจ์ ๋ฐํด๊ฐ ์๋ค๋ฉด 1:N ๊ด๊ณ์์ ํญ์ N์ชฝ์ ์ธ๋ ํค๊ฐ ์์ผ๋ฏ๋ก, ์ธ๋ ํค๊ฐ ์๋ ๋ฐํด๋ฅผ ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ผ๋ก ์ ํ๋ฉด ๋๋ค. ๋ฌผ๋ก ์๋์ฐจ๋ฅผ ์ฃผ์ธ์ผ๋ก ์ ํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ค๋ฉด ์๋์ฐจ๊ฐ ๊ด๋ฆฌํ์ง ์๋ ๋ฐํด ํ ์ด๋ธ์ ์ธ๋ ํค๊ฐ์ด ์ ๋ฐ์ดํธ ๋๋ฏ๋ก ๊ด๋ฆฌ์ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค. ๋ํ ์ถ๊ฐ์ ์ผ๋ก ๋ณ๋์ ์ ๋ฐ์ดํธ ์ฟผ๋ฆฌ๊ฐ ํ์ํ์ฌ ์ฑ๋ฅ๋ฌธ์ ๋ ์๊ธฐ๊ฒ ๋๋ค.
์ด๋ Database์ JPA๋ฅผ ํ์ตํ๊ฒ๋๋ฉด ์์ธํ๊ฒ ๋ค๋ฃจ๋, ์ดํดํ์ง ๋ชปํ๋ค ํ๋๋ผ๋ ๋์ด๊ฐ๋๋ก ํ์.
# ์ํฐํฐ ํด๋์ค ๊ฐ๋ฐ
์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ค๊ณ๋ฅผ ๋ง์ณค๋ค. ํ ์ด๋ธ์ ๋ฐํ์ผ๋ก ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ณด์. ์คํ๋ง์์๋ @Entity ์ด๋ ธํ ์ด์ ์ ํตํด ํด๋น ๊ฐ์ฒด๊ฐ ์ํฐํฐ์์ ์๋ฆฐ๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ฟผ๋ฆฌ๋ฌธ์ ์๋ ์์ฑํ๋ค.
- ์๋ต - (์ถํ์ ๊นํ๋ธ ์ ๋ก๋ ์์ )
# ์ํฐํฐ ์ค๊ณ์ ์ฃผ์์
@ManyToMany๋ ์ฌ์ฉํ ์ผ์ด ์๋ค.
์ ๊ทธ๋ฐ์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณต๋ถ๋ฅผ ํ๊ฒ๋๋ฉด ์ง๊ฒน๋๋ก ๋ค์ ์ ์๋ค. ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ ๋๋ค ๋งํด๋ฒ๋ฆฌ๋ ์ ๋๋ก ์ฐ์ง๋ง์.
@ RDB์ ์ฐ๊ฒฐํ ID๋ ์ด๋ฆ์ ๋ช ํํ๊ฒ ํด์ฃผ์.
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋๋ ์๊ด์์ง๋ง DB์์ ์ฌ์ฉํ ๋์๋ ์ด๋ฆ์ด ํท๊ฐ๋ ค ์กฐ์ธํ ๋ ๊ท์ฐฎ์์ง๋ค. ๊ฐ๋ฅํ๋ฉด [tableName_id] ์ด๋ฐ์์ผ๋ก ๋ช ํํ๊ฒ ๋ง๋ค์ด์ฃผ์.
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id") // id ๋์ member_id ์ฌ์ฉ
private Long id;
}
@ ์ํฐํฐ์๋ ๊ฐ๊ธ์ Setter๋ฅผ ์ฌ์ฉํ์ง๋ง์.
๋น์ฆ๋์ค ๋ก์ง์ด ์๋ Setter๋ก ๋ณ๊ฒฝํ๊ฒ๋๋ฉด ๋ณ๊ฒฝ ํฌ์ธํธ๊ฐ ๋๋ฌด ๋ง์ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค. ๋์ค์ ๋ฆฌํํ ๋ง์ผ๋ก Setter๋ฅผ ์ ๊ฑฐํด์ฃผ๋๋ก ํ์. ๋ฌผ๋ก Getter๋ ๋จ์ ์กฐํ์ด๊ธฐ์ ๊ทธ๋ ๊ฒ๊น์ง ์ ๊ฒฝ ์ธ ํ์๋ ์๋ค.
๊ฐ๊ธ์ ์์ฑ์์์ ๊ฐ์ ๋ชจ๋ ์ด๊ธฐํํด์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ํด๋์ค๋ฅผ ๋ง๋ค์. ํ์ํ๋ค๋ฉด Setter๊ฐ ์๋ ๋น์ฆ๋์ค ๋ก์ง์์ ์ฒ๋ฆฌํ๋๋ก ๋ง๋ค์ด์ผ ํ๋ค.
@ ๋ชจ๋ ์ฐ๊ด๊ด๊ณ๋ ์ง์ฐ๋ก๋ฉ์ผ๋ก ์ค์ ํ์.
- ์ฆ์๋ก๋ฉ( EAGER )์ ์์ธก์ด ์ด๋ ต๊ณ , ์ด๋ค SQL์ด ์คํ๋ ์ง ์ถ์ ํ๊ธฐ ์ด๋ ต๋ค. ๊ทธ๋๋ง JPA ๋ฉ์๋์์๋ ์์ฒด์ ์ผ๋ก ์ต์ ํ๋ฅผ ์ ๊ณตํด์ฃผ์ง๋ง JPQL์ ์คํํ ๋๋ N+1 ๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํ๋ค.
- N+1 ๋ฌธ์ ๋, ์ฐ๊ด๊ด๊ณ๊ฐ ์๋ ์ํฐํฐ๋ฅผ ์กฐํํ ๋ ์กฐํ๋ ๋ฐ์ดํฐ ์(N)๋งํผ ์ฟผ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ๋ ๋ฆฌ๋ ๋ฌธ์ ์ด๋ค.
- ๊ทธ๋์ ์ค๋ฌด์์ ๋ชจ๋ ์ฐ๊ด๊ด๊ณ๋ ์ง์ฐ๋ก๋ฉ( LAZY )์ผ๋ก ์ค์ ํด์ผ ํ๋ค.
- ์ฐ๊ด๋ ์ํฐํฐ๋ฅผ ํจ๊ป DB์์ ์กฐํํด์ผ ํ๋ฉด, fetch join ๋๋ ์ํฐํฐ ๊ทธ๋ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค.
- ํ๋๋ง ๊ฐ์ ธ์ค๋ @XToOne(OneToOne, ManyToOne) ๊ด๊ณ๋ ๊ธฐ๋ณธ์ด ์ฆ์๋ก๋ฉ์ด๋ฏ๋ก ์ง์ ์ง์ฐ๋ก๋ฉ์ผ๋ก ์ค์ ํด์ผ ํ๋ค.
@ ์ปฌ๋ ์ ์ ํ๋์์ ์ด๊ธฐํํ๊ณ ์๋์ง๋ง์
null ๋ฌธ์ ์์ ์์ ํ๊ฒ ๋ง๋ค์. ํ์ด๋ฒ๋ค์ดํธ(JPA)๋ ์ํฐํฐ๋ฅผ ์์ํ ํ ๋ ์ปฌ๋ ์ ์ ๊ฐ์ธ ํ์ด๋ฒ๋ค์ดํธ์ ๋ด์ฅ ์ปฌ๋ ์ ์ผ๋ก ๋ณํํ๋ค. ๊ทธ๋์ ์์์ ๋ฉ์๋์์ ์ปฌ๋ ์ ์ ์๋ชป ์์ฑํ๊ฒ๋๋ฉด ์์ํ ๋ด๋ถ ๋ฉ์ปค๋์ฆ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
Member member = new Member();
System.out.println(member.getOrders().getClass()); // class java.util.ArrayList
em.persist(team); // ์์ํ. ArrayList -> ๊ฐ์ธ๋ฒ๋ฆผ.
System.out.println(member.getOrders().getClass()); // class ํ์ด๋ฒ๋ค์ดํธ ๋ด์ฅ ์ปฌ๋ ์
//์ถ๋ ฅ ๊ฒฐ๊ณผ
class java.util.ArrayList
class org.hibernate.collection.internal.PersistentBag
@ ํ ์ด๋ธ, ์นผ๋ผ๋ช ์์ฑ ๊ท์น
์คํ๋ง๋ถํธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ด๋ฒ๋ค์ดํธ ๊ธฐ๋ณธ ๋งคํ์ ๋ต์ด ๋ณ๊ฒฝ๋๋ค. ์ฆ ์ค์ ํ ์ด๋ธ ํ๋๋ช ์ด ๋ค๋ฅด๋ค. ( ํ์ด๋ฒ๋ค์ดํธ๋ง ์ฌ์ฉํ๋ฉด ์ํฐํฐ์ ํ๋๋ช ์ ๊ทธ๋๋ก ํ ์ด๋ธ์ ์นผ๋ผ๋ช ์ผ๋ก ์ฌ์ฉํ๋ค.)
๋ง์ฝ ํ์ฌ์์ ๋ค๋ฅด๊ฒ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด spring.jpa.hibernate.naming.physical-strategy ํด๋์ค๋ฅผ ๋ณด๊ณ ๋ง๋ค๋ฉด ๋๋ค.
// ์คํ๋ง๋ถํธ ์ค์
// ํ
์ด๋ธ ์ด๋ฆ์ด ์ ํ์์ง ์์์ ๋ ๊ท์น
spring.jpa.hibernate.naming.implicit-strategy:// ์ด๋ ๊ฒ ํด๋์ค๋ฅผ ๋ฐ๊ฟ ์ ์๋ค.
org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
// ๋ชจ๋ ์ด๋ฆ์ ์ ์ฉ๋๋ ๊ท์น ๊ท์น
spring.jpa.hibernate.naming.physical-strategy:
org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
'๐ฑ Spring Framework > Spring Boot & Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ทธ๋๋ค ์คํ๋ง ๋ถํธ #1 (0) | 2022.03.02 |
---|---|
#1 ํ๋ก์ ํธ ํ๊ฒฝ์ค์ (0) | 2021.08.07 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev