๐ ์ค๋์ ํ์ต ํค์๋
- Cascade, orphanRemoval
๐ฅ Cascade (์์์ฑ ์ ์ด)
- ์ฌ์ฉ ์์น
: ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ ๋ฐ๋ํธ - ๋ถ๋ชจ ์ํฐํฐ(N:1 ์์ 1)
: ์ฆ, @OneToMany๊ฐ ์๋ ์ชฝ or @OneToOne๋ ๊ฐ๋ฅ
- ์ฌ์ฉ ์กฐ๊ฑด
: ์์ชฝ ์ํฐํฐ์ ๋ผ์ดํ์ฌ์ดํด์ด ๋์ผํ๊ฑฐ๋ ๋น์ทํด์ผํ๋ค.
: ex) ๊ฒ์๊ธ์ด ์ญ์ ๋๋ฉด ์ฒจ๋ถํ์ผ๋ ๊ฐ์ด ์ญ์ ๋์ด์ผ ํ๋ค.
: ๋์ ์ํฐํฐ๋ก์ ์์์ฑ ์ ์ด๋ ํ์ฌ ์ํฐํฐ์์๋ง ์ ์ด ๋์ด์ผ ํ๋ค. (๋ค๋ฅธ ๊ณณ์์ ๋ ๊ฑธ๋ฉด ์๋จ)
: ex) ์ฒจ๋ถํ์ผ์ ๊ฒ์๊ธ์ด ์๋ ๋ค๋ฅธ๊ณณ์์ ์์์ฑ ์ ์ด๋ฅผ ํ๋ฉด ์๋๋ค.
- ์ต์ ์ข ๋ฅ
- ALL : ์ ์ฒด ์ํ ์ ์ด
- PERSIST : ์ ์ฅ ์ํ ์ ์ด
- REMOVE : ์ญ์ ์ํ ์ ์ด
- MERGE : ์ ๋ฐ์ดํธ ์ํ ์ ์ด
- REFERESH : ๊ฐฑ์ ์ํ ์ ์ด
- DETACH : ๋น์์์ฑ ์ํ ์ ์ด
๐ฅ orphanRemoval (๊ณ ์ ๊ฐ์ฒด ์ ๊ฑฐ)
- ์ฌ์ฉ ์์น
: @OneToMany ๋๋ @OneToOne์์ ์ฌ์ฉ - ๋ถ๋ชจ ์ํฐํฐ
- ์ฌ์ฉ ๋ฐฉ๋ฒ
: Cascade.REMOVE์ ๋น์ทํ ์ฉ๋๋ก ์ญ์ ๋ฅผ ์ ํํ๋๋ฐ ์ฐ์ธ๋ค.
: ๋ถ๋ชจ ๊ฐ์ฒด์์ ๋ฆฌ์คํธ ์์์ญ์ ๋ฅผ ํ์๊ฒฝ์ฐ ํด๋น ์์ ๊ฐ์ฒด๋ ๋งคํ์ ๋ณด๊ฐ ์์ด์ง๋ฏ๋ก ๋์ ์ญ์ ํด์ค๋ค.
โ๏ธ Cascade.REMOVE์ opphanRemoval์ ์ฐจ์ด
Cascade.REMOVE์ ๊ฒฝ์ฐ 1์ ํด๋นํ๋ ๋ถ๋ชจ ์ํฐํฐ๋ฅผ em.remove๋ฅผ ํตํด ์ง์ ์ญ์ ํ ๋,
๊ทธ ์๋์ ์๋ N์ ํด๋นํ๋ ์์ ์ํฐํฐ๋ค์ด ์ญ์ ๋๋ ๊ฒ์ด์ ๋๋ค.
orphanRemoval=true๋ ์ ์ผ์ด์ค๋ ํฌํจํ๋ฉฐ, 1์ ํด๋นํ๋ ๋ถ๋ชจ ์ํฐํฐ์ ๋ฆฌ์คํธ์์ ์์๋ฅผ
์ญ์ ํ๊ธฐ๋ง ํด๋ ํด๋น N์ ํด๋นํ๋ ์์ ์ํฐํฐ๊ฐ delete๋๋ ๊ธฐ๋ฅ๊น์ง ํฌํจํ๊ณ ์๋ค๊ณ ์ดํดํ๋ฉด ๋ฉ๋๋ค.
์ฆ, orphanRemoval=true๋ ๋ฆฌ์คํธ ์์๋ก์จ์ ์์์ฑ ์ ์ด๋ ํด์ค๋ค๋ ๋ป์ ๋๋ค.
๐ฅ ์์์ฑ ์ ์ด ์ต๊ฐ ์กฐํฉ
orphanRemoval=true + Cascade.ALL
์ด ๋๊ฐ๋ฅผ ํจ๊ป ์ค์ ํ๋ฉด ์์์ํฐํฐ์ ๋ผ์ดํ ์ฌ์ดํด์ด ๋ถ๋ชจ ์ํฐํฐ์ ๋์ผํด์ง๋ฉฐ,
์ง์ ์์ ์ํฐํฐ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ๋๋ฏ๋ก ์์ ์ํฐํฐ์ Repository ์กฐ์ฐจ ์์ด๋ ๋ฉ๋๋ค.
๋ฐ๋ผ์, ๋งคํ ํ ์ด๋ธ์์ ๋ง์ด ์ฐ์ ๋๋ค.
๐ ์ค๋์ ํ๊ณ
JPA ์ด๋ ต๋ค ์ด๋ ค์ ํ์ง๋ง ๊ณ์ ๋ฐ๋ณตํ๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
03/11(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 53์ผ์ฐจ TIL - SOLID (0) | 2024.03.12 |
---|---|
03/08(๊ธ) ๋ด์ผ๋ฐฐ์์บ ํ Java 52์ผ์ฐจ TIL - @OneToOne (0) | 2024.03.08 |
03/06(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 50์ผ์ฐจ TIL - ORM (0) | 2024.03.06 |
03/05(ํ) ๋ด์ผ๋ฐฐ์์บ ํ Java 49์ผ์ฐจ TIL - DAO, DTO, VO (0) | 2024.03.05 |
03/04(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 48์ผ์ฐจ TIL - Optional (0) | 2024.03.04 |