Persistence context
EntityManager
์ธ์คํด์ค์ ์ฐ๊ด ์์.entity instances๋ค์ ์งํฉ์ด๋ผ ๋ถ๋ฅผ ์ ์์๋ฏ.
๊ทธ๋ฆฌ๊ณ ์ด entity๋ค์ uniqueํ๊ฒ ๊ตฌ๋ถ๋ ์ ์์.
์์์ฑ ์ปจํ ์คํธ ๋ด๋ถ์์๋, entity๋ค์ lifeCycle์ ๊ด๋ฆฌ๋จ.
์ ๋ฆฌํ์๋ฉด..
The persistence context is the first-level cache where all the entities are fetched from the database or saved to the database.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์ฅํ๊ณ ์ํ๋ ๋ชจ๋ ์ํฐํฐ๋ค์ด ์กด์ฌํ๋ 1์ฐจ ์บ์๋ผ ํ ์ ์์.
application - persistence context - database
application๊ณผ database ์ฌ์ด์ ์กด์ฌ.
๊ทธ๋ฆฌ๊ณ ๋ด๋ถ์ ์กด์ฌํ๋ entity๋ค์ ๋ณํ๋ฅผ ๊ด๋ฆฌํจ.
๋ง์ฝ์ ํธ๋์ญ์ ์ค์, ์ํฐํฐ๋ค์ ๋ณํ๊ฐ ์ผ์ด๋๋ค๋ฉด, ํด๋น entity๋ dirty ์ํ๋ก marked ๋จ.
๊ทธ๋ฆฌ๊ณ ํธ๋์ญ์ ์ด ๋๋๋ค๋ฉด (commit ์์..), ํด๋น ๋ณ๊ฒฝ๋ค์ด Database๋ก flush๋จ
Persistence Context Type
persistence context๊ฐ ์ด๋ค scope๋ด์ ์กด์ฌ ํ ์ง์ ๋ํ ์ค์ .
default๋
Transaction-scoped
์ธ ๋ฏ.
Transaction-Scoped Persistence Context
์์์ฑ ์ฝํ ์คํธ๋, ํธ๋์ญ์ ๋ด๋ถ์ ์กด์ฌํ๋ ๊ฒ.
ํธ๋์ญ์ ์งํ ์์, ์์์ฑ ์ปจํ ์คํธ๊ฐ ์๋ ์ง ํ์ธํด์, ์์ผ๋ฉด ์๋ ๊ฑธ ์ฐ๊ณ ์์ผ๋ฉด ์๋ก ๋ง๋ฌ.
ํธ๋์ญ์ ๋ด๋ถ์์ ์์์ฑ ์ฝํ ์คํธ์ ์ํ๋ ์ํฐํฐ์ ๋ณํ๊ฐ ์ผ์ด๋ ๊ฒฝ์ฐ, ์ด๊ฑธ ๊ฐ์งํ๊ณ ์ถํ ํธ๋์ญ์ ์ปค๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณ๊ฒฝ์ฌํญ์ flushํจ
Extended-Scoped Persistence Context
์ฌ๋ฌ๊ฐ์ ํธ๋์ญ์ ์์ ํ๋์ ์์์ฑ ์ฝํ ์คํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ.
entity persist๋ ํธ๋์ญ์ ์์ด ํ ์ ์์ง๋ง, (entity๋ฅผ persistence context์ ์ถ๊ฐํ๋ ๊ฒ..)
flush๋ ํธ๋์ญ์ ์์ด ํ ์ ์์.
์ฆ ์ฌ๋ฌ๊ฐ ํธ๋์ญ์ ์์ ํ๋์ ์์์ฑ ์ปจํ ์คํธ๊ฐ ๊ณต์ ๋๋ ๋งํผ, persist ๊ฐ์ ์ก์ ์ ํธ๋์ญ์ ์กด์ฌ ์ฌ๋ถ๊ฐ ์ฒดํฌ ๋์ง ์์ง๋ง, database ๋ก flush ํ๋ ์ก์ ์๋ ํธ๋์ญ์ ์ด ํ์ ์ธ๋ฏ.
์ฐธ๊ณ
Last updated