본문 바로가기
IT/Java

Spring Data Jdbc 3.0 에서.

by 성준하이 2023. 1. 11.
반응형

기존에 사용하던 Spring Data Jdbc 는 2.x 버전이었다.

 

어디서 글을 보았는데 Spring Data Jdbc에서도 mybatis처럼 Dto 매핑이 가능하다는 글을 보았다.

 

스프링 공식홈페이지에서는 Spring Data Jdbc 3.0 부터 변수를 @Query annotation 안에 이렇게 정의 할수 있다고 소개를 한다.

https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#jdbc.query-methods.at-query.streaming-results

interface PersonRepository extends PagingAndSortingRepository<Person, String> {

  List<Person> findByFirstname(String firstname);                                   

  List<Person> findByFirstnameOrderByLastname(String firstname, Pageable pageable); 


  Slice<Person> findByLastname(String lastname, Pageable pageable);                 


  Page<Person> findByLastname(String lastname, Pageable pageable);                 


  Person findByFirstnameAndLastname(String firstname, String lastname);             


  Person findFirstByLastname(String lastname);                                      

  @Query("SELECT * FROM person WHERE lastname = :lastname")
  List<Person> findByLastname(String lastname);                                     

  @Query("SELECT * FROM person WHERE lastname = :lastname")

  Stream<Person> streamByLastname(String lastname);                                     

  @Query("SELECT * FROM person WHERE username = :#{ principal?.username }")
  Person findActiveUser();
}

여기서 주목해야하는 부분은 맨 아래 있는 메서드 이다.

다른것들과 다르게 #으로 지정이 되어서 principal 이라는 객체를 받아오고 그 안의 username을 변수로 사용할수 있다.

 

이럼으로써 controller, Service, repository 등에서 메서드를 옮길때 객체에서 변수들을 빼내서 여러개의 변수를 들고 layer를 이동할 필요가 없고 받은 객체 그대로 들고 다니면서 마지막에 쿼리 에서만 해당 dto를 풀어주기만 하면 되서 작업의 양이 줄게 된다.

 

물론 DTO 뿐 아니라 Getter Setter 가 지정된 객체라면 모두 가능하고 dto에 대한 설명은 아래 참고 포스팅을 참고하도록 하자.


참고 포스팅

https://thenicesj.tistory.com/301

 

Entity, DTO, VO 차이

자바에서는 객체를 구현하는 다양한 방법이 있는데 대표적으로 Entity, DTO, VO 이렇게 세가지가 있다. 이들에 대해서 다뤄보려고 한다. 먼저 세가지를 분명하게 구분하는 이유는 다음과 같다. Entity

thenicesj.tistory.com

 

반응형

'IT > Java' 카테고리의 다른 글

자바에서 상수  (11) 2023.01.20
자바 split 시 유의사항  (14) 2023.01.13
EJB란?(스프링 등장배경)  (12) 2023.01.10
Open API 3.0 Swagger v3 상세설정(23/01/08)  (1) 2023.01.07
자바에서 ltrim과 rtrim 구현하기  (17) 2023.01.07

댓글