카테고리 없음

[SpringBoot] 쿼리 메서드 기능과 @Query

sunhoKim 2021. 7. 24. 22:33

객체지향 쿼리에 대한 기능.

 

쿼리 메서드 : 메서드의 이름 자체가 쿼리의 구문으로 처리되는 기능

 

@Query : SQL과 유사하게 엔티티 클래스의 정보를 이용해서 쿼리를 작성하는 기능

 

Querydsl 등의 동적 쿼리 처리 기능

 

-------------------------------------------

 

1. 쿼리 메서드

메서드의 이름 자체가 쿼리문이 되는 기능.

주로, findBy, getBy로 시작하고, 이후 필요한 필드 조건이나 And,Or와 같은 키워드를 이용해서

메서드의 이름 자체로 질의 조건을 만든다.

 

2. @Query 어노테이션

검색과 같은 기능을 작성할 때 편리함을 제공하나, 조인이나 복잡한 조건을 처리해야 하는 경우에는 And,Or등이 사용되며 약간 불편하다.

때문에 일반적인 경우, 간단한 처리만 쿼리 메서드를 이용하고, @Query를 이용하는 경우가 더 많다.

 

@Query의 경우 메서드의 이름과 상관없이 메서드에 추가한 어노테이션을 통해서 원하는 처리가 가능하다.

@Query의 value는 JPQL로 작성하는데, 흔히 객체지향 쿼리라고 불린다.

 

기능으로는 다음과 같은 작업이 가능하다.

1. 필요한 데이터만 선별적으로 추출하는 기능이 가능

2. 데이터베이스에 맞는 순수한 SQL을 사용하는 기능

3. inser,update,delete와 같은 select가 아닌, DML등을 처리하는 기능

728x90