본문 바로가기
Programming/JPA & Spring Data JPA 기초

25. 기타

by JKROH 2023. 4. 18.
반응형
해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다.

* 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)
반응형

댓글