반응형
해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다.
* count 메서드
- 갯수를 세는 쿼리(COUNT)를 실행하는 메서드이다.
- long count() : 전체 갯수를 센다.
- long countByNameLike(String keyword)
- long count(Specification<User> spec) : 스팩으로도 셀 수 있다.
* @Query 네이티브 쿼리
- @Query 애너테이션에 JPQL이 아닌 SQL을 작성하고 실행할 수 있다.
@Query(
value = "select * from user u where u.create_date >= date_sub(now(), interval 1 day)",
nativeQuery = true) // nativeQuery임을 명세
@Query(
value = "select max(create_date) from user",
nativeQuery = true)
- 시퀀스에서 식별자를 새로 구해서 이 값을 id를 사용한다거나 할 때 네이티브 쿼리를 쓰면 좋다.
* 한 개 결과 조회
- 보통 List로 받는데, 하나의 결과만 받고 싶을 때가 있다.
- User findByName(String name)
- Optional<User> findByName(String name)
- 리턴 타입이 List가 아니다.
- 존재하면 해당 값, 없으면 null 또는 비어있는 Optional이 반환된다.
- 조회 결과 갯수가 두 개 이상이면 예외가 발생한다.
* 인터페이스
- Repository의 하위 인터페이스
- CrudRepository
- PagingAndSotringRepository
- JpaRepository 등등...
* 인터페이스를 상속하면 편리하나...
- Repository의 하위 인터페이스를 상속하면 관련 메서드를 모두 포함한다.
- 이런 메서드들을 추가적으로 만들 필요가 없으니 편리하다.
- 개인적으로는 Repository만 상속받고 딱 필요한 메서드만 만드는 방법을 선호하신다고 하니, 영상에서 확인하자.
* 정리
- Spring Data JPA를 사용하면 편하게 리포지토리를 구현할 수 있다.
- 그러나 전부 Spring Data JPA를 사용하지는 말자!
- 경우에 따라 MyBatis, JdbcTemplate 등을 적절히 사용해야한다(CQRS)
반응형
'Programming > JPA & Spring Data JPA 기초' 카테고리의 다른 글
24. Specification을 이용한 검색 조건 지정 (0) | 2023.04.18 |
---|---|
23. 정렬, 페이징, @Query (0) | 2023.04.10 |
22. 리포지터리 메서드 작성 규칙 (0) | 2023.04.07 |
21. Spring Data JPA 시작하기 (0) | 2023.04.06 |
20. 기타 AttributeConverter, @Formula, @DynamicUpdate(@DynamicInsert), @Immutable, @Subselect (0) | 2023.04.05 |
댓글