IT수업/SPRINGBOOT

IT 수업 21주차 (151) JPA 쿼리 메소드

워제하 2024. 5. 16. 12:49

BookRepository로가서 마우스 우클릭으로 Generate를 누르면 사용할 수 있는 함수들이 나온다.

 

 

● 함수 명명법

 

 

 

실습을하기 위해 workbench의 book테이블에 값을 더 넣어준다.

 

 

BookRepositoryTest.java로 와서 일치하는 bookName을 select해본다.

 

 

 

다른 실습도 사용해보기 위해 BookRepository에서 추가로 작성한다.

 

 

 

 

 

 

 

● JPQL

JPQL은 Java Persistence Query Language로 엔티티 객체를 조회하는 객체지향 쿼리이며 JPA가 지원하는 다양한 쿼리 방법 중 하나이다.

SQL은 테이블을 대상으로 쿼리하지만 JPQL은 엔티티 객체를 대상으로 쿼리한다.

 

@Query는 더 구체적인 쿼리 메서드를 작성하기 위해 사용하는 쿼리 메서드의 custom버전이다.

@Query 어노테이션은 Entity의 JpaRepository를 상속받는 인터페이스에 정의한다.

 

 

 

 

 

< 실습하기 >

UserRepository.java에서 Query에노테이션을 사용해 매핑시켜 본다.

 

- 숫자로 매핑시키기

 

'?' 뒤의 숫자는 파라미터 위치를 말하는 것으로

List<User> selectByRole(String role, String username, String password); 가 있으면 1번째에 위치한 role을 찾겠다는 말이 된다. 만약 숫자가 2라면 username을 찾게 된다.

 

workbench에 user테이블의 값을 이렇게 넣어줬다.

 

 

 

UserRepositoryTest에서 테스트해본다.

 

 

 

 

- 숫자가 아닌 이름으로 매핑시키기

 

UserRepository.java 에서 작성해주는데

@Param은 ibatis가 아닌 repository로 매핑시켜줘야한다.

 

UserRepositoryTest에서 테스트해본다.

 

 

 

- 여러 개 매핑시키기

UserRepository.java 에서 password와 role을 매핑시켜준다.

그리고 UserRepositoryTest에서 테스트해본다.

 

 

 

- 포함 문자 매핑시키기

 

 

 

 

 

 

 

 

 

 

 

 

참고 : https://velog.io/@bo-ram-bo-ram/JPQ