JPA๋ž€?

๊ฐœ๋… ์ •๋ฆฌ

JPA, Hibernate, Spring Data JPA์˜ ์ „๋ฐ˜์ ์ธ ๊ทธ๋ฆผ

H2 Database

H2๋Š” ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ RDBMS์ด๋‹ค. Browser console ์ง€์›, ์ €์šฉ๋Ÿ‰(2MB), JDBC API ์ง€์› ๋“ฑ ๋‹ค์–‘ํ•œ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ๋ฆฌ์†Œ์Šค๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋Ÿ‰ DB๋กœ์„œ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์•Œ๋งž์€ DB์ด๋‹ค.

JPA

JPA(Java Persistence API)๋Š” ํ˜„์žฌ ORM(Object Relational Mapping)์˜ ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ, ์ธํ„ฐํŽ˜์ด์Šค ๋ชจ์Œ์ด๋‹ค. ์ฆ‰, ORM์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ชจ์•„๋‘” ๊ฒƒ์ด๋ผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ORM์— ๋Œ€ํ•œ ์ž๋ฐ” API ๊ทœ๊ฒฉ์ด๋ฉฐ Hibernate, OpenJPA ๋“ฑ์ด JPA๋ฅผ ๊ตฌํ˜„ํ•œ ๊ตฌํ˜„์ฒด์ด๋‹ค.

Hibernate

JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ JPA๋ฅผ ๊ตฌํ˜„ํ•œ ORM ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. Hibernate๋Š” JPA ๋ช…์„ธ์˜ ๊ตฌํ˜„์ฒด๋กœ, javax.persistence.EntityManager ์™€ ๊ฐ™์€ JPA์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

Spring Data JPA

Spring Data JPA๋Š” JPA๋ฅผ ์“ฐ๊ธฐ ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋†“์€ ๋ชจ๋“ˆ๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ JPA๋ฅผ ๋” ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์ด๋Š” JPA๋ฅผ ํ•œ๋‹จ๊ณ„ ์ถ”์ƒํ™” ์‹œํ‚จ Repository๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์ด๋ฃจ์–ด์ง„๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ Repository ์ธํ„ฐํŽ˜์ด์Šค์— ์ •ํ•ด์ง„ ๊ทœ์น™๋Œ€๋กœ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, Spring์ด ์•Œ์•„์„œ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์— ์ ํ•ฉํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋Š” ๊ตฌํ˜„์ฒด๋ฅผ ๋งŒ๋“ค์–ด Bean์œผ๋กœ ๋“ฑ๋กํ•ด์ค€๋‹ค.

Spring Boot ์„ค์ •

pom.xml

application.yml

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ h2 database์— jpa๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋‹ค ๋˜์—ˆ๋‹ค.

์ฐธ์กฐ

Last updated

Was this helpful?