728x90
728x90
1. ์ฐ๊ด๊ด๊ณ ์ด๋ ธํ ์ด์ -> [์ถ์ฒ]
- one to one: ์ผ๋์ผ ๋งคํ
- one to many: ์ผ๋๋ค ๋งคํ
- many to one: ๋ค๋์ผ ๋งคํ
2. Many to One Mapping
User์ OrderLine์ด 1:n์ ๊ด๊ณ์ด๋ฉด, OrderLine Table์ @ManyToOne ์ด๋ ธํ ์ด์ ์ ์์ฑํด์ผ ํ๋ค.
- @ManyToOne(fetch = FetchType.LAZY)
- FetchType.EAGER [์ฆ์๋ก๋ฉ]๋ ์ฐ๊ด๋ ์ํฐํฐ๋ฅผ ๋ฐ๋ก ์กฐํํ๋ค. ์ค์ ๊ฐ์ฒด๊ฐ ์ฌ์ฉ๋์ง ์๋๋ผ๋ ์กฐํ๋ฅผํ๋ค.
- FetchType.LAZY [์ง์ฐ๋ก๋ฉ]์ ์ค์ ์ฌ์ฉ ์์ ์ ์กฐํํ๋ค.
- @JoinColumn(name="FK")
- ์ธ๋ํค ๋งคํ์ ์ฌ์ฉ
- @ManyToOne(optional =True) : FK๋ Null (Total participation constraint์ ๊ฐ์)
- @ManyToOne(optional =False) : FK๋ Not null(Partial participation constraint์ ๊ฐ์)
๊ฐ๊ธ์ ์ด๋ฉด FetchType.LAZY๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
3. One to Many Mapping
User์ OrderLine์ด 1:n์ ๊ด๊ณ์ด๋ฉด, User Table์ @OneToMany ์ด๋ ธํ ์ด์ ์ ์์ฑํด์ผ ํ๋ค.
- @OneToMany(mappedBy = " ")
- mappedBy๋ ์๋ฐฉํฅ ๋งคํ์์ ์ฐธ์กฐ ๋นํ๋ Entity์์ ์ฌ์ฉ๋๋ ๊ฒ์ด๋ค.
- ํ์ฌ ์์ ์ ์ฐธ์กฐ๊ฐ ํด๋น ์ํฐํฐ์ ์ด๋ค ๋ณ์๋ก ์ง์ ๋์๋์ง JPA ์๊ฒ ์๋ ค์ฃผ๊ธฐ ์ํจ์ด๋ค.
- ์๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ์์๋ ์ธ๋ ํค๋ฅผ ๊ฐ๋ ์ชฝ์์๋ง UPDATE, INSERT๋ฅผ ์ํํ๊ณ , ์๋ ์ชฝ์ SELECT๋ง ์ํํ ๊ฒ
- Lombok @ToString(exclude ="") ์ด์ฉ
4. Transactional
- JPA์ ๋ชจ๋ ์์ ์ ํ๋์ Transactional ์์์ ์ํํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
- @Transactional ์ ํด๋น ํด๋์ค์ ๊ฒฝ๊ณ๋ฅผ ๊ฑธ์ด์ฃผ๋ ๊ฒ์ด๋ค.
5. Rollback
- @Rollback(false) : ์คํ์ DB์ ์ ์ฅ
- @Rollback(true) : ์คํ์ DB์ ์ ์ฅํ์ง ์์
[์ถ์ฒ]
728x90