๋ชฉ๋กJPA (2)

๐ŸŒฑ โ†’ ๐ŸŒณ

JPA ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ž€?

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ์ด์  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) J..

Server/Java & Spring 2023. 6. 1. 20:37
[Spring] save() vs saveAndFlush()

Spring ํ”„๋ ˆ์ž„์›Œํฌ์˜ JPA(Java Persistense API)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ๋•Œ save()์™€ saveAndFlush() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ“save() ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ์ž‘์—…์„ ์ง€์—ฐ์‹œํ‚ด ์ฆ‰, ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๊ธฐ ์ „๊นŒ์ง€ ์—”ํ‹ฐํ‹ฐ๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—๋งŒ ์กด์žฌํ•˜๊ฒŒ ๋จ ์ด ๋•Œ๋ฌธ์— save() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ“saveAndFlush() ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ”๋กœ ์ €์žฅํ•˜๋Š” ์ž‘์—… ์ˆ˜ํ–‰ ์ฆ‰, saveAndFlush() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ฐ˜์˜๋จ ์ด ๋•Œ๋ฌธ์— saveAndFlush() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋˜๋Š” ์‹œ์ ์„ ๋”..

Server/Java & Spring 2023. 3. 22. 10:30