[Spring & SpringBoot-JPA] JPA Query Method - JPA 쿼리 메서드를...
[Spring & SpringBoot-JPA] JPA Query Method - JPA 쿼리 메서드를...
Hibernate의 QueryMethod
우리가 지금까지 배웠던 예제를 다시 한번 가볍게 봐보자.
UserRepositoryTest.java
UserController.java
Test 코드이던 어떤 서비스이던 모두 findById() 메서드를 통해서 id 값으로 검색을 했다. 하지만 생각해보면 우리가 회원 검색을 할 때 다음과 같이 회원 account 정보를 통해서 검색을 한다.
지인의 github id 를 검색
우리는 현재 DB를 관리하고 있으니 id 칼럼을 알 수 있는 것이지, 실제 서비스에서 id를 외우기란 정말 어려운 일이다. 그래서 이런 점을 QueryMethod를 통해서 회원의 account 로 검색을 할 수 있게 한다.
findById는 select다.
지금까지 우리는 findById() 메서드를 통해서 id 값으로 검색을 했는데 이는 정확히 말 하면 findBy 라는 문법을 보면 JPA가 자동으로 select 쿼리 구문을 실행시키는 것과 같은 말이다.
QueryMethod를 만들어보자
쿼리 메서드를 만들기 위해서 해당 repository 인터페이스로 이동해야 한다.
우리는 회원의 이름으로 정보를 검색할 예제를 만들기 위해서 userRepository 로 이동한다. 그리고 default 값인 findById 를 변경하기 위해서 다음과 같이 하는데 findBy~ 에 뒤는 검색으로 사용할 해당 칼럼 명을 적어주면된다.
Optional로 User의 null 오류를 피한 뒤 String 매개변수로 name 을 받아서 해당 name을 토대로 JPA가 select 쿼리를 진행한다.
select * from user where account = ? 의 구문이 실행되는 것이다.
이제 쿼리 메서드를 테스트해보자!
을 수행하면 findById 가 아닌 findByName 으로도 검색이 가능한 것을 볼 수 있다.
여러가지 검색도 가능하다!!
한 가지 정보가 아니라 여러가지 정보를 통해서 검색을 하는 경우도 있는데 이는 위를 이해 했다면 정말 쉽다.
우선 해당 Repository로 이동한 뒤,
는 select * from user where account = ? and name = ? 과 같은 쿼리 구문이다.
from http://wonit.tistory.com/138 by ccl(S) rewrite - 2020-03-11 08:54:26
댓글
댓글 쓰기