๐Ÿฅž BE
home

JPA

JPA(Java Persistence API)
โ€ข
์ž๋ฐ” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
โ€ข
์ž๋ฐ” ์ง„์˜์˜ ORM ํ‘œ์ค€
์ธํ„ฐํŽ˜์ด์Šค์—๋Š” ๊ตฌํ˜„์ฒด๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•จ.

JPA ์žฅ๋‹จ์ 

โ€ข
JPA ์‚ฌ์šฉ ์‹œ ์žฅ์ 
โ—ฆ
SQL์„ ๋ชจ์•„์„œ ํ•œ ๋ฒˆ์— ๋ณด๋‚ด๋ฏ€๋กœ ์„ฑ๋Šฅ ์ƒ ์ด์ 
โ—ฆ
์‘์šฉ ๋ ˆ๋ฒจ์—์„œ Repetable Read

์ถ”๊ฐ€์ ์œผ๋กœ

โ€ข
N + 1 ๋ฌธ์ œ
โ—ฆ
JPA์˜ ์„ฑ๋Šฅ ํŠœ๋‹์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋…
โ€ข
JPQL
โ—ฆ
JPA๊ฐ€ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋ณธ CRUD์™ธ์— ํ†ต๊ณ„์„ฑ ์ฟผ๋ฆฌ ๋“ฑ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์œ„ํ•ด
โ—ฆ
JPQL์€ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ณง ๋ฐ”๋กœ ์‹คํ–‰๋˜๋Š” ํŠน์„ฑ์ด ์žˆ์œผ๋ฉด ์ด๋Š” N + 1 ๋ฌธ์ œ์™€ ์—ฐ๊ด€์ด ์žˆ์Œ
โ€ข
QueryDSL
โ—ฆ
๋ฌธ์ž์—ด์˜ ๋ง์…ˆ ์—ฐ์‚ฐ์„ ํ†ตํ•œ ์ฟผ๋ฆฌ ์ž‘์„ฑ์€ 1) ๋ถˆํŽธํ•˜๊ณ  2) ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ
โ—ฆ
๋ฌธ์ž์—ด์˜ ๋ง์…ˆ ์—ฐ์‚ฐ์€ ํŠนํžˆ ๋™์  ์ฟผ๋ฆฌ ์ž‘์„ฑ ์‹œ ์ฃผ๋กœ ์‚ฌ์šฉ
โ—ฆ
๋™์  ์ฟผ๋ฆฌ ์ž‘์„ฑ์„ ๊ฐ„ํŽธํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด QueryDSL ํ•™์Šต