[Spring Data JPA] JPA๋ž€?

์œ ๊ด‘์ง„ยท2023๋…„ 10์›” 22์ผ
0

๐Ÿ“Œ 1. JPA(Java Persistence API)

์ž๋ฐ” ORM ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋ช…์„ธ๋กœ, JAVA์—์„œ ์ œ๊ณตํ•˜๋Š” API์ด๋‹ค.

Spring์—์„œ ์ œ๊ณตํ•˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋‹ค!

์ž๋ฐ” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋‹ค.

ORM์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ” ํด๋ž˜์Šค์™€ DBํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•œ๋‹ค.

SQL ์ฟผ๋ฆฌ๋ฌธ์„ ๋งคํ•‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

ORM์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ชจ์•„๋‘” ๊ฒƒ์ด๋ฉฐ, JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JPA๋ฅผ ๊ตฌํ˜„ํ•œ Hibernate, EclipseLink, DataNucleus๊ฐ™์€ ORM ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿคทโ€โ™€๏ธ ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ORM์ด ๋Œ€์ฒด ๋ญ˜๊นŒ?

ORM์ด๋ž€ Java ๊ฐ์ฒด์™€ DB์˜ ํ…Œ์ด๋ธ”์ด ๋งคํ•‘์„ ์ด๋ฃจ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์ฆ‰, ๊ฐ์ฒด๊ฐ€ ํ…Œ์ด๋ธ”์ด ๋˜๋„๋ก ๋งคํ•‘ ์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

ORM์„ ์ด์šฉํ•˜๋ฉด SQL Query๊ฐ€ ์•„๋‹Œ ๋ฉ”์„œ๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, User ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ MySQL์—์„œ๋Š” SELECT * FROM user;๋ผ๋Š” Query๋ฅผ ์‹คํ–‰ํ•ด์•ผ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ORM์„ ์‚ฌ์šฉํ•˜๋ฉด User ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋œ ๊ฐ์ฒด๋ฅผ user๋ผ ํ•  ๋•Œ, user.findAll()๋ผ๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋กœ ๋ฐ์ดํ„ฐ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

Query๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋งŒ์œผ๋กœ Query๊ฐ€ ์ˆ˜ํ–‰๋˜๋‹ค ๋ณด๋‹ˆ, ORM์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธํ•ด์ง„๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Query๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉด ORM์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ๊ณ , ์„ฑ๋Šฅ์ด Raw Query์— ๋น„ํ•ด ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๊ธฐ๋•Œ๋ฌธ์—

ํ•œ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ Mybatis์™€ JPA๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

๐Ÿ“Œ 2. JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๋งคํ•‘์„ ๋‹จ์ˆœํ™” ํ•จ์œผ๋กœ ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

JPA๋Š” ๋ฐ˜๋ณต์ ์ธ CRUD SQL์„ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

JPA๋Š” ๋งคํ•‘๋œ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•ด์„œ SQL์„ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š”๋ฐ, ๊ฐœ๋ฐœ์ž๋Š” ์–ด๋–ค SQL์ด ์‹คํ–‰๋ ์ง€ ์ƒ๊ฐ๋งŒํ•˜๋ฉด ๋œ๋‹ค๋Š” ํŽธ๋ฆฌํ•จ์ด ์žˆ๋‹ค.

JPA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๊ฒƒ์€ SQL์•„๋‹Œ ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด์— ๋”ฐ๋ผ ๋‹น์—ฐํžˆ ์ƒ์‚ฐ์„ฑ์ด ์ข‹์•„์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜๋„ ์ˆ˜์›”ํ•˜๋‹ค.

profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์œ ๊ด‘์ง„ ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€