๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

JPA

JPA

 

reference
์Šคํƒ€ํŠธ ์Šคํ”„๋ง ๋ถ€ํŠธ - ๊ตฌ๋ฉ๊ฐ€๊ฒŒ ์ฝ”๋”ฉ๋‹จ

์Šคํ”„๋ง ๋ถ€ํŠธ ๊ฐœ๋…๊ณผ ํ™œ์šฉ - ๋ฐฑ๊ธฐ์„ ๋‹˜


JPA ์†Œ๊ฐœ

๊ฐ์ฒด์˜ ๊ตฌ์กฐ์™€ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๊ฐ€ ์œ ์‚ฌํ•˜๋‹ค๋Š” ๊ฒƒ์—์„œ ์‹œ์ž‘

JDBC๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…์— ํ•˜๋‚˜์˜ ์ถ”์ƒํ™”๋œ ๊ณ„์ธต ์ถ”๊ฐ€ 

ORM, JPA, Spring Data JPA์˜ ๊ด€๊ณ„

ORM(Object Relational Mapping)

๊ฐ€์žฅ ์ƒ์œ„ ๊ฐœ๋…์— ํ•ด๋‹นํ•œ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ RDBMS๊ตฌ์กฐ์— ์—ฐ๊ฒฐ์‹œ์ผœ ๊ฐœ๋ฐœํ•˜์ž๋Š” ์‚ฌ์ƒ์„ ๋‚ดํฌํ•˜๊ณ  ์žˆ๋‹ค.

JPA(Java Persistence API)

ORM์„ ์œ„ํ•œ ์ž๋ฐ” (EE) ํ‘œ์ค€์ด๋‹ค. Java์–ธ์–ด๋ฅผ ์ด์šฉํ•ด์„œ ORM์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ง€์ผœ์•ผ ํ•˜๋Š” ์ŠคํŽ™์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

Hibernate

JPA์˜ ๊ตฌํ˜„์ฒด๋“ค ์ค‘์—์„œ ํ•˜๋‚˜์˜ ์ œํ’ˆ์ด๊ณ  spring boot์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ Hibernate๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

Spring Data JPA

๋‚ด๋ถ€์ ์œผ๋กœ Hibernate๋ฅผ ์ด์šฉํ•ด์„œ ์Šคํ”„๋ง์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

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

JPA๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” Repository ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ข…๋ฅ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

CrudRepository : CRUD ๊ด€๋ จ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณต
PagingAndSortingRepository : ํŽ˜์ด์ง• ๋ฐ sorting ๊ด€๋ จ ๊ธฐ๋Šฅ๋“ค ์ œ๊ณต
JpaRepository : JPA ๊ด€๋ จ ํŠนํ™” ๊ธฐ๋Šฅ๋“ค ๋“ฑ

์ƒ์† ๊ด€๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์—, JpaRepository ์˜ ๊ฒฝ์šฐ, ์œ„์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ <T, ID> ๋‘ ๊ฐœ์˜ ์ œ๋„ค๋ฆญ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, T๋Š” ์—”ํ‹ฐํ‹ฐ์˜ ํƒ€์ž… ํด๋ž˜์Šค๋ฅผ, ID๋Š” ์‹๋ณ„์ž(PK)์˜ ํƒ€์ž…์„ ์˜๋ฏธํ•œ๋‹ค.

์•„๋ž˜๋Š” ์˜ˆ์‹œ ์ฝ”๋“œ์ด๋‹ค.

import org.springframework.data.repository.JPARepository;
import com.company.domain.Board;

public interface BoardRepository extends JPARepository<Board, Long> {  
}

spring-boot-starter-data-jpa ์‚ดํŽด๋ณด๊ธฐ

spring-boot-starter-data-jpa ๊ฐ€ hibernate๋„ ๊ฐ€์ ธ์˜ค๊ณ  orm๋„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ spring-boot-starter-jdbc ๋„ ํฌํ•จ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฐ€์žฅ ํ•˜์œ„์— ์žˆ๋Š” DataSource๋ฅผ ์“ฐ๊ฒŒ ๋œ๋‹ค.

๊ฐ„๋žตํ•˜๊ฒŒ Spring Data JPA -> JPA -> Hibernate -> Datasource์ˆœ์œผ๋กœ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

JPA ์žฅ์ 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋…๋ฆฝ์ ์ธ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์ฝ”๋“œ์˜ ์œ ์—ฐํ•จ 

JPA ๋‹จ์ 

ํ•™์Šต ๊ณก์„ ์ด ํฌ๋‹ค (๊ณต๊ฐ...)

๊ทผ๋ณธ์ ์œผ๋กœ ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…์ด ํ•„์ˆ˜

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ ์œ ์˜ ๊ธฐ๋Šฅ ์‚ฌ์šฉ์— ์ œํ•œ์ 

'JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Entity Life Cycle  (0) 2021.01.21
Entity, Entity Manager  (0) 2021.01.21
Data source ์„ค์ •, JPA ๊ด€๋ จ ์„ค์ •  (0) 2021.01.21
JPA Annotation  (0) 2021.01.21