Spring Data JPA 시작하기
https://www.youtube.com/watch?v=1Q3Qtd5HZy4
사용법
- spring-boot-starter-data-jpa 의존
- 스프링 부트 설정
- 엔티티 단위로 Repository 인터페이스를 상속 받은 인터페이스 생성
- 또는 그 하위 인터페이스
- 지정한 규칙에 맞게 메서드 추가
- save(), findById(), delete() 등 규칙에 맞게 메서드 정의
- https://charactermail.tistory.com/441
- 필요한 곳에 해당 인터페이스 타입을 주입해서 사용
Spring Data JPA 02 리포지터리 메서드 작성 규칙
식별자로 엔티티 조회 메서드
findById
- T findById(ID id)
- 없으면 null
- Optional<T> findById(ID id)
- 없으면 empty Optional
public interface UserRepository extends Repository<User, String>{
Optional<User> findById(String email);
}
엔티티 삭제 메서드
delete
- void delete(T entity)
- void deleteById(ID id)
삭제할 대상이 존재하지 않으면 익셉션 발생
Optional<User> userOpt = userRepository.findById("email2@email.com");
userOpt.ifPresent(user -> {
userRepository.delete(user);
});
엔티티 저장 메서드
save
- void save(T entity)
- T save(T entity)
User savedUser = userRepository.save(new User(...));
특정 조건으로 찾기
findBy프로퍼티(값) : 프로퍼티가 특정 값인 대상
- List<User> findByName(String name)
- List<Hotel> findByGradeAndName(Grade g, String name)
조건 비교
- List<User> findByNameLike(String keyword)
- List<User> findByCreatedAtAfter(LocalDateTime time)
- List<Hotel> findByYearBetween(int from, int to)
- LessThan, IsNull, Containing, In, ... 스프링 레퍼런스 문서 참고
findAll() : 모두 조회
'JPA' 카테고리의 다른 글
실전! 스프링 데이터 JPA / 섹션 4. 공통 인터페이스 기능 (0) | 2024.09.27 |
---|---|
실전! 스프링 데이터 JPA / 3. 예제 도메인 모델 (0) | 2024.09.26 |
@Transactional 어노테이션 관련 인상깊게 정보 본 블로그 (0) | 2023.08.29 |
스프링 REST API 생성 원칙 (0) | 2023.06.13 |
JPA Entity에 index 거는 방법 (0) | 2022.11.26 |
댓글