티스토리 뷰
728x90
반응형
의존성 주입
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
순수 JPA 기반 리포지토리
@Repository
public class TestRepository{
....
}
순수 Spring을 이용할 경우 공통 인터페이스 설정
- JavaConfig 설정 ( 만약 Spring boot 일 경우 생략 가능)
@Configuration
@EnableJpaRepositories
public class AppConfig{
...
}
@EnableJpaRepositories 는 JPA Repository 공통인터페이스(JpaRepository)를 사용하기 위한 어노테이션이다.
@EnableJpaRepositories는 Config 클래스 하위 패키지를 스캔합니다.
또한 basePackages를 통해 스캔 범위를 지정할 수 있습니다.
@Configuration
@EnableJpaRepositories(basePackages = "com.test.repository")
- 스프링 부트 사용시 @SpringBootApplication 위치를 지정(해당 패키지와 하위 패키지 인식)
- 만약 위치가 달라지면 @EnableJpaRepositories 필요
스프링 데이터 JPA 기반 Repository 예시
public interface TestRepository extends JpaRepository<Test,Long>{
...
}
기존 순수 JPA Respository에서는 Class로 생성을 하여 사용하였습니다. 하지만 JpaRepository를 사용할 경우 interface로 TestRepository를 선언하여 JpaRepository를 상속 받아 사용합니다.
- JpaRepositroy<T,D> : T -> 엔티티 타입, D -> pk 식별자 타입
- @Repository 선언 생략 가능
JpaRepository 분석
- JpaRepository 인터페이스 : 공통 CRUD 제공
public interface JpaRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID>{
...
}
주요 메서드
- save(S) : 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합
- delete(T) : 엔티티 하나를 삭제한다. 내부에서 EntityManager.remove() 호출
- findById(ID) : 엔티티 하나를 조회한다. 내부에서 EntityManager.find() 호출
- getOne(ID) : 엔티티를 프록시로 조회한다. 내부에서 EntityManager.getReference() 호출
- findAll(…) : 모든 엔티티를 조회한다. 정렬( Sort )이나 페이징( Pageable ) 조건을 파라미터로 제공할 수 있다
- T findOne(ID) -> Optional findById(ID) 변경
- boolean exists(ID) -> boolean existsById(ID) 변경
728x90
반응형
'프로그램 언어 > Spring JPA' 카테고리의 다른 글
기본값 타입 (임베디드 타입) (0) | 2023.05.01 |
---|---|
기본값 타입 (1) (0) | 2023.04.30 |
영속성 전이(CASCADE) (0) | 2023.04.28 |
지연 로딩, 즉시로딩 (0) | 2023.04.28 |
PROXY(프록시) (0) | 2023.04.28 |
250x250
반응형
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Quartz
- spring
- 이미지
- ncp
- 컨테이너
- mybatis
- dockerfile
- Lock
- docker
- Cache
- 알고리즘
- leatcode
- 스케줄러
- 리눅스
- 격리수준
- centos7
- 도커
- insert
- LocalDate
- Linux
- 권한
- hazelcast
- 개념 이해하기
- 정의
- 캐시
- 캘린더
- Java
- 네이버 클라우드
- MySQL
- dfs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함