Transactional ์ด๋
ธํ
์ด์
์ผ๋ก ์ธํด ํ๋ก์ ๊ฐ์ฒด(๋ณดํต ์๋น์ค)๊ฐ ์์ฑ๋๋ค.
ParentA(์๋น์ค), ChildB(ํ๋ก์) ๊ฐ ์์ ๋ ChildB ์์ ParentA ๋ฅผ super๋ก ๋ถ๋ฅด๋ฉด ParentA ์์ this ๋ฉ์๋๋ ChildB ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
JPA ์์๋ ๊ทธ๋์ CbildB ์์ ParentA ์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ super ๋ก ํธ์ถํ์ง ์๊ณ ํ๋์ ์ด๊ธฐํํ ParentA ๋ก ํธ์ถํ๋ค.
๊ทธ๋์ ์๋น์ค์์ ๋ด๋ถ ํผ๋ธ๋ฆญ ๋ฉ์๋ a, b ๊ฐ ์๊ณ a ๊ฐ b ๋ฅผ ํธ์ถํ ๋, b์ Transactional ์ด ๊ฑธ๋ ค์๋ค๊ณ ํ๋๋ผ๋ ํตํ์ง ์๋๋ค. ์๋ํ๋ฉด a ๊ฐ b ๋ฅผ ํธ์ถํ ๋ transaction์ด ๊ฐ์ธ์ง ํ๋ก์์ b ๋ฅผ ํธ์ถํ์ง ์๊ณ ๋ฐ๋ก ์์ (์๋น์ค) ์ b ๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์ด๋ค.
์์ฝ
์์์ด ์๋ ์กฐํฉ์ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค!
JDK Dynamic Proxy์ ์์, CGLIB ์ ์กฐํฉ