기타

JPA의 쿼리 메서드 Tip

로드존슨 2023. 4. 2. 13:00
728x90

Spring Data JPA의 쿼리 메서드에 대한 명명 규칙은 미리 정의된 키워드 및 규칙 집합을 기반으로 하므로 메서드 이름을 기반으로 쿼리를 생성할 수 있다.

 

Spring Data JPA에서 쿼리 메서드의 일반적인 형식은

find[Entity]  By[Property]   [Opearator]  패턴을 따른다.

 

find[Entity]

-쿼리하려는 엔티티 클래스의 이름

 

 

 

 By[Property]

-필터링하려는 엔티티속성의 이름 

 

[Opearator]

-속성에서 필터링하는 방법을 지정하는 선택적 연산자이다.

 

-Equals:  주어진값과 정확히 일치하는 속성이 있는 항목을 필터링

-GreaterThan : 지정된 값보다 큰 값을 가진 속성이 있는 항목을 필터링

-LessThan :지정된 값보다 작은 값을 가진 속성이 있는 항목을 필터링

-Like : 주어진 패턴과 일치하는 속성이 있는 항목을 필터링(패턴은 와일드카드 문자로 '%'를 포함)

-StartingWith : 지정된 접두사로 시작하는 속성이 있는 엔티티를 필터링

-EndingWith  : 지정된 접미사로 끝나는 속성이 있는 항목을 필터링

-Containing : 지정된 하위 문자열을 포함하는 속성이 있는 항목을 필터링

-OrderBy : 하나 이상의 속성을 기반으로 결과의 정렬순서를 지정한다.

 

Tip

findById 과 getReferenceByid 두 메소드가 id를 기반으로 저장소에서 객체를 검색하는데 사용되지만  성능최적화로 보면

getReferenceByid 가 좋다.

 

getReferenceByid  는 데이터를 실제로 로드하지 않고 저장소에서 객체에 대한 참조를 검색하는데 사용되는 방법이다.

이 메서드는 개체의 id에 엑세스 하고 간단한 작업을 수행하기만 하는 경우에 사용한다.

 

findById  는 객체의 id를 기반으로 저장소에서 객체의 실제 데이터를 검색하는데 사용하고 데이터를 메모리에 로드하고 객체를 반환한다.

 

getReferenceByid  는 모든 속성을 로드하지 않고  객체에 참조를 반환하고 findById  는 전체 객체와 모든 속성을 메모리에 로드한다.더 문제가 되는건 지연로드와 같은 일부경우에는 연결된 모든 속성을 한번에 로드하게된다. 

 

getReferenceByid   : 엔티티에 대한 간단한 작업(엔티티가 존재하는지 확인, 다른개체에서 엔티티에 대한 참조설정)

findById   : 엔티티 수정, 삭제 엔티티 작업을 직접적으로 수행해야 하는 경우에 유용!!

728x90