์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- private subnet ec2 ๋ก์ปฌ ์ ์
- ํ์ดํผ๋ฐ์ด์
- JPA
- prod docker-compose
- s3 log ์ ์ฅ
- s3 ์ด๋ฏธ์ง ๋ค์ด๋ก๋
- nGrinder
- redis ํ ์คํธ์ฝ๋
- aws ์ฟ ํฐ
- s3 ์ด๋ฏธ์ง ์ ์ฅ
- Kafka
- AWS Certified Solutions Architect - Associate
- ์คํํ๋ ๋ฏธ์ค
- ์๋ฐ
- ๋ค์ค ์ปจํ ์ด๋
- ์๋ฒ ํฐ์ง๋ ๋์ปค ์ฌ์คํ
- ์ ํจ์ค ๋น๋ ์ค๋ฅ
- aws saa ํฉ๊ฒฉ
- Entity
- ํ๋ก๊ทธ๋๋จธ์ค ํฉ์นํ์์๊ธ
- docker
- @RestControllerAdvice
- ํ๋ก๊ทธ๋๋จธ์ค ์ปฌ๋ฌ๋ง๋ถ
- ํ๋ก๊ทธ๋๋จธ์ค
- docker compose
- redis ์กฐํ
- docker ps -a
- Codedeploy ์ค๋ฅ
- docker-compose kafka
- ์ ํจ์ค ์ค์ผ์ค๋ฌ
- Today
- Total
๐๐ข๐๐ โ๐๐๐ ๐๐๐ก๐๐ ๐๐๐๐โง
[Spring] Entity,์์์ฑ ์ปจํ ์คํธ ๋ณธ๋ฌธ
[Spring] Entity,์์์ฑ ์ปจํ ์คํธ
๐คRyusun๐ค 2022. 12. 31. 23:46Entity
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋์ํ๋ ํด๋์ค
- @Entity๊ฐ ๋ถ์ ํด๋์ค๋ JPA์์ ๊ด๋ฆฌํ๋ฉฐ ์ํฐํฐ๋ผ๊ณ ํฉ๋๋ค.
EntityManager
- ์ํฐํฐ๋ฅผ ๊ด๋ฆฌํ๋ ์ญํ ์ ์ํํ๋ ํด๋์ค
- ์ํฐํฐ ๋งค๋์ ๋ด๋ถ์ ์์์ฑ ์ปจํ ์คํธ(Persistence Context)๋ฅผ ํตํด ์ํฐํฐ๋ค์ ๊ด๋ฆฌํฉ๋๋ค.
- ์ํฐํฐ ๋งค๋์ ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ๋์์ธ CRUD(Create, Read, Update, Delete)๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ํฐํฐ ๋งค๋์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ ์งํ ์ ์๊ฒ ํฉ๋๋ค.
์ํฐํฐ ์๋ช ์ฃผ๊ธฐ
์๋ช ์ฃผ๊ธฐ | ๋ด์ฉ |
๋น์์(new) | new ํค์๋๋ฅผ ํตํด ์์ฑ๋ ์ํ๋ก ์์์ฑ ์ปจํ ์คํธ์ ๊ด๋ จ์ด ์๋ ์ํ |
์์(managed) | - ์ํฐํฐ๊ฐ ์์์ฑ ์ปจํ
์คํธ์ ์ ์ฅ๋ ์ํ๋ก ์์์ฑ ์ปจํ
์คํธ์ ์ํด ๊ด๋ฆฌ๋๋ ์ํ - ์์ ์ํ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ง ์์ผ๋ฉฐ, ํธ๋์ญ์ ์ปค๋ฐ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ |
์ค์์ ์ํ(detached) | ์์์ฑ ์ปจํ ์คํธ์ ์ํฐํฐ๊ฐ ์ ์ฅ๋์๋ค๊ฐ ๋ถ๋ฆฌ๋ ์ํ |
์ญ์ ์ํ(removed) | ์์์ฑ ์ปจํ ์คํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ญ์ ๋ ์ํ |
EntityManager์ ๋ฉ์๋
- find() : ์์์ฑ ์ปจํ ์คํธ์์ ์ํฐํฐ๋ฅผ ๊ฒ์ํ๊ณ ์์์ฑ ์ปจํ ์คํธ์ ์์ ๊ฒฝ์ฐ ๋ฐ์ด์ปค๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅํฉ๋๋ค
- persist() : ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅํฉ๋๋ค.
- remove() : ์ํฐํฐ ํด๋์ค๋ฅผ ์์์ฑ ์ปจํ ์คํธ์์ ์ญ์ ํฉ๋๋ค.
- flush() : ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅ๋ ๋ด์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํฉ๋๋ค.
์์์ฑ ์ปจํ ์คํธ(Persistence Context)
- ์ํฐํฐ๋ฅผ ์๊ตฌ ์ ์ฅํ๋ ํ๊ฒฝ
- JPA๊ฐ ๊ด๋ฆฌํ๋ ์ํฐํฐ ๊ฐ์ฒด์ ์งํฉ
- ์ํฐํฐ ๋งค๋์ ๋ฅผ ํตํด ์์์ฑ ์ปจํ ์คํธ์ ์ ๊ทผํฉ๋๋ค.
- ์ํฐํฐ ๊ฐ์ฒด๊ฐ ์์ ์ผํ ์คํธ์ ๋ค์ด์ค๊ฒ ๋๋ฉด JPA๋ ์ํฐํฐ ๊ฐ์ฒด์ ๋งคํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ DB์ ๋ฐ์ํฉ๋๋ค.
- ์ํฐํฐ ๊ฐ์ฒด๊ฐ ์์ ์ปจํ ์คํธ์ ๋ค์ด์ค๊ฒ ๋์ด ๊ด๋ฆฌ ๋์์ด ๋๋ฉด ๊ทธ ๊ฐ์ฒด๋ฅผ ์์ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์์์ฑ ์ปจํ ์คํธ ์ฌ์ฉ์ ์ด์
์์์ฑ ์ปจํ ์คํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด์ ์ค๊ฐ๊ณ์ธต์ด๊ธฐ ๋๋ฌธ์ ๋ฒํผ๋ง, ์บ์ฑ ๋ฑ์ ํ ์ ์์ต๋๋ค.
1. 5L ์์ด๋๋ฅผ ๊ฐ์ง member05 ์กฐํํฉ๋๋ค.
2. member05 ์ํฐํฐ๊ฐ ์์์ฑ ์ปจํ ์คํธ์ 1์ฐจ ์บ์์ ์ ์ฅ๋์ด ์์ง ์์ผ๋ฉด Database ์กฐํํฉ๋๋ค.
3. member05 ์ํฐํฐ๋ฅผ 1์ฐจ ์บ์์ ์ ์ฅํฉ๋๋ค.
4. member05 ์ํฐํฐ ๋ฐํํฉ๋๋ค.
1์ฐจ ์บ์
์์์ฑ ์ปจํ ์คํธ์๋ 1์ฐจ ์บ์๊ฐ ์กด์ฌํ๋ฉฐ Map<KEY, VALUE>๋ก ์ ์ฅ๋ฉ๋๋ค. entityManager.find() ๋ฉ์๋ ํธ์ถ ์ ์์์ฑ ์ปจํ ์คํธ์ 1์ฐจ ์บ์๋ฅผ ์กฐํํ ํ ์ํฐํฐ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ํด๋น ์ํฐํฐ๋ฅผ ๋ฐํํ๊ณ , ์ํฐํฐ๊ฐ ์์ผ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์กฐํ ํ 1์ฐจ ์บ์์ ์ ์ฅ ๋ฐ ๋ฐํํฉ๋๋ค.
๋์ผ์ฑ ๋ณด์ฅ
ํ๋์ ํธ๋์ญ์ ์์ ๊ฐ์ ํค๊ฐ์ผ๋ก ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅ๋ ์ํฐํฐ ์กฐํ ์ ๊ฐ์ ์ํฐํฐ ์กฐํ๋ฅผ ๋ณด์ฅํฉ๋๋ค. ๋ฐ๋ก 1์ฐจ ์บ์์ ์ ์ฅ๋ ์ํฐํฐ๋ฅผ ์กฐํํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํฉ๋๋ค.
ํธ๋์ญ์ ์ ์ง์ํ๋ ์ฐ๊ธฐ ์ง์
์์์ฑ ์ปจํ ์คํธ์๋ ์ฐ๊ธฐ ์ง์ฐ SQL์ ์ฅ์๊ฐ ์กด์ฌํฉ๋๋ค. entityManager.persist()๋ฅผ ํธ์ถํ๋ฉด 1์ฐจ ์บ์์ ์ ์ฅ๋๋ ๊ฒ๊ณผ ๋์์ ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์์ SQL ๋ฌธ์ด ์ ์ฅ๋ฉ๋๋ค. ์ด๋ ๊ฒ SQL์ ์์๋๊ณ ํธ๋์ญ์ ์ ์ปค๋ฐํ๋ ์์ ์ ์ ์ฅ๋ SQL ๋ฌธ๋ค์ด flush ๋๋ฉด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋ฉ๋๋ค. ์ด๋ ๊ฒ ๋ชจ์์ ๋ณด๋ด๋ฉด ์ฑ๋ฅ์ ์ด์ ์ ๋ณผ ์ ์์ต๋๋ค.
๋ณ๊ฒฝ ๊ฐ์ง
JPA๋ 1์ฐจ ์บ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฒ์ ๋ถ๋ฌ์จ ์ํฐํฐ์ ์ค๋ ์ท ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 1์ฐจ ์บ์์ ์ ์ฅ๋ ์ํฐํฐ์ ์ค๋ ์ท์ ๋น๊ต ํ ๋ณ๊ฒฝ ๋ด์ฉ์ด ์๋ค๋ฉด UPDATE SQL ๋ฌธ์ ์ฐ๊ธฐ ์ง์ฐ SQL ์ ์ฅ์์ ๋ด์๋ก๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปค๋ฐ ์์ ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ์๋์ผ๋ก ๋ฐ์ํฉ๋๋ค. ๊ทธ๋์ ๋ฐ๋ก update๋ฌธ์ ํธ์ถํ ํ์๊ฐ ์์ต๋๋ค.
[์ฐธ์กฐ]
1. https://www.youtube.com/watch?v=5DAW3CCZ_rU&list=WL&index=2&t=354s.
2. ์คํ๋ง ๋ถํธ ์ผํ๋ชฐ ํ๋ก์ ํธ with jpa (์ ์ ๋ณ๊ตฌํ)
'๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ด๐ป > ๐๐ฉ๐ซ๐ข๐ง๐ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] Docker (0) | 2023.05.14 |
---|---|
[Spring] Jpa๋ฅผ ์ด์ฉํ ์กฐํ์ ์ฆ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ (0) | 2023.01.27 |
[Spring] DI (์ ์์ฑ์ ์ฃผ์ ์ ์ฌ์ฉํด์ผ ํ๋๊ฐ?) (0) | 2022.12.27 |
[Spring] JPA, ORM (0) | 2022.12.20 |
[Spring] TestCode, TDD, JUnit, assertJ (0) | 2022.12.19 |