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 |