Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ํฌ๋กค๋ง
- ํ ์ดํ๋ก์ ํธ
- node.js
- ํ์ด์ฌ
- ํ๋ก๊ทธ๋๋จธ์ค
- mongodb
- ๊ทธ๋ฆฌ๋
- ๊ฐ๋ฐ
- ๊ตญ๋น์ง์
- ๋๋ฆผ์ฝ๋ฉ
- HTML
- ๋ชจ๊ฐ์ฝ
- Python
- ์ฝ๋ฉํ ์คํธ
- ๋ ธ๋ง๋์ฝ๋
- Til
- heapq
- fe
- error
- ํ๋ก ํธ์๋
- ํ๋ก์ ํธ
- CSS
- ์ฝ๋ฉ์ ํ
- JS
- react
- javascript
- ๋ฐฑ์ค
- KDT
- ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉ
Archives
- Today
- Total
๐ฑ → ๐ณ
JPA ์์์ฑ ์ปจํ ์คํธ๋? ๋ณธ๋ฌธ
728x90
์์์ฑ ์ปจํ ์คํธ ์ด์
1. 1์ฐจ ์บ์ ์กฐํ
- JPA๋ DB๋ฅผ ์ง์ ์กฐํํ๋ ๊ฒ์ด ์๋๋ผ 1์ฐจ ์บ์, ์ฆ ์์์ฑ ์ปจํ
์คํธ๋ฅผ ์ฐ์ ์ ์ผ๋ก ์กฐํํ๋ค.
๋ฐ๋ผ์ DB์ I/O ๋ถ๋ด์ด ์ ๊ฒ ๋ฐ์ํ์ฌ ์ฑ๋ฅ์ ์ด์ ์ด ์๋ค๋ ๊ฒ์ด JPA์ ์ฅ์ ์ด๋ผ ํ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก JPA๋ Entity์ PK๋ฅผ ์ด์ฉํ์ฌ ์๋ณ์ ํ๊ฒ ๋๋ฉฐ, 1์ฐจ ์บ์์๋ ๊ณ ์ ์๋ณ์ ๊ฐ์ผ๋ก ์ํฐํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ค. - JPA์ findById() ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด
์ฐ์ , 1์ฐจ ์บ์์์ ์๋ณ์ ๊ฐ์ผ๋ก ์ ์ฅ๋ Entity๋ฅผ ์ฐพ๊ณ 1์ฐจ ์บ์์ ์กด์ฌํ๋ฉด ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฆฌํด, ์กด์ฌํ์ง ์๋๋ค๋ฉด DB์ ์ง์ ์กฐํํด 1์ฐจ ์บ์์ ์ ์ฌํ ํ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค.
2. ๋์ผ์ฑ ๋ณด์ฅ
3. ํธ๋์ญ์ ์ ์ง์ํ๋ ์ฐ๊ธฐ ์ง์ฐ
4. ๋ณ๊ฒฝ ๊ฐ์ง(Dirty Checking)
- JPA๋ Entity์ Update๋ฅผ ๋ํฐ ์ฒดํน ๋ฐฉ์์ผ๋ก ์ ๊ณตํ๊ณ ์๋ค.
๋ํฐ ์ฒดํน์ด๋ Entity์ ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ๋งํ๋ค. JPA๊ฐ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋๋ ์์ ์ Entity์ ๋ณ๊ฒฝ๋ ๊ฐ์ ํ์ธํ๊ณ update๋ฅผ ๋ฌธ์ DB์ ์๋์ผ๋ก ๋ฐ์ํ๋ค.
๋ฐ๋ผ์ ๊ฐ๋ฐ์๊ฐ ๋ช ์์ ์ผ๋ก Entity๋ฅผ update๋ฅผ ํ๋ ๊ฒ์ด ์๋๋ผ JPA Engine์๊ฒ ์ผ์ํ๋ ๊ฒ์ด๋ค. - ์ฌ๊ธฐ์ JPA๋ 1์ฐจ ์บ์์์ ์ค๋
์ท(Snapshot)์ ์ฌ์ฉํ๋ค.
JPA๋ Entity๋ฅผ ์กฐํํ์ฌ 1์ฐจ ์บ์์ ์ค๋ ์ท์ ์์ฑํ๋ค. ์ดํ ํธ๋์ญ์ ์ด ๋๋๋ ์์ ์ ์กฐํํ ์ํฐํฐ ๊ฐ์ฒด์ ์ค๋ ์ท์ ๋น๊ตํ์ฌ ๋ณ๊ฒฝ๋ ๊ฐ๋ง Update๋ฅผ ๋ฐ์ํ๋ค. - ์ด๋ ์ค๋ ์ท์ผ๋ก ๊ด๋ฆฌ๋๋ ค๋ฉด ์ํฐํฐ์ ์ํ๋ ์์ ์ํ์ฌ์ผ ํ๋ค. ๋ํ Trasaction์ด readOnly ๋ชจ๋์ผ ๊ฒฝ์ฐ ์ค๋ ์ท์ ์์ฑ๋์ง ์์ผ๋ฏ๋ก ๋ณ๊ฒฝ ๊ฐ์ง๋ ๋์ํ์ง ์๋๋ค.
5. ์ง์ฐ๋ก๋ฉ(Lazy Loading)
Reference
728x90
'Server > Java & Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) (0) | 2023.05.31 |
---|---|
[Spring boot] properties ์ฌ์ฉ์ "Could not resolve placeholder" ์ค๋ฅ ๋ฐ์ (2) | 2023.05.28 |
Spring์์ Redis๋ก ์บ์ฑ์ฒ๋ฆฌ (0) | 2023.05.16 |
[Spring] save() vs saveAndFlush() (0) | 2023.03.22 |
[Spring] IoC, DI๋? (0) | 2023.03.22 |