readOnly=true : ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ์๋ ์ฝ๊ธฐ ์ ์ฉ ๋ฉ์๋์ ์ฌ์ฉ, ์์์ฑ ์ปจํ
์คํธ๋ฅผ ํ๋ฌ์ ํ์ง ์
์ผ๋ฏ๋ก ์ฝ๊ฐ์ ์ฑ๋ฅ ํฅ์(์ฝ๊ธฐ ์ ์ฉ์๋ ๋ค ์ ์ฉ)
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ๊ฐ ์ง์ํ๋ฉด DB์์ ์ฑ๋ฅ ํฅ์
์์ ์ค๋ช ๋ง ๋ณด๋ฉด, ์ ์ฑ๋ฅ์ด ํฅ์๋๋์ง ๋ช ํํ๊ฒ ์ดํดํ๊ธฐ ์ฝ์ง ์๋ค.
์ข ๋ ์์๋ณด์,
@Transactional์ ํด๋์ค, ์ธํฐํ์ด์ค, ๋ฉ์๋์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ฉ์๋์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ด๋ ธํ ์ด์ ์ด ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
์ด ๋ฐฉ์์ ์ฐ๋ฆฌ๋ ์ ์ธ์ ํธ๋์ญ์ ์ด๋ผ ๋ถ๋ฅด๋ฉฐ, ์ ์ฉ๋ ๋ฒ์์์๋ ํธ๋์ญ์ ๊ธฐ๋ฅ์ด ํฌํจ๋ ํ๋ก์ ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด ์๋์ผ๋ก commit ํน์ rollback์ ์งํํด ์ค๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก @Transactional(readOnly = true) ์ ์ธ์ ํตํด ์ปค๋ฐ ์ flush๋ฅผ ํ์ง ์๋๋ค.
Hibernate๋ Entity์ flush๋ฅผ ํธ์ถํ์ง ์๊ฒ ๋๊ณ , ๋ณ๊ฒฝ์ ๋ฌด์๋๋ค.
๋ํ Entity์ Snapshot์ ๋น๊ตํ๋ ๊ณผ์ ์ ์๋ตํ๊ฒ ๋๋ฉด์ ์ฑ๋ฅ ์์ ์ด์ ์ ์ป๊ฒ ๋๋ ๊ฒ์ด๋ค.