본문 바로가기

Spring

QueryMethod는 어떻게 만들어지는 것일까?

SpringDataJpa를 사용하다보면 QueryMethod를 만들어서 데이터베이스에 쿼리를 자주 날리게 된다.

그럼 어떻게 SpringDataJpa는 메소드명만 갖고 쿼리를 날리는것일까?

 

1. 일단 SpringDataJpa는 해당 메소드가 쿼리메소드인지, 아니면 커스텀메소드인지 구분을 한다.

 

2-1. 커스텀 메소드일 경우엔 해당 메소드를 바로 실행시킨다.

2-2. 쿼리메소드일 경우에는 쿼리메소드의 이름을 갖고 파싱하게 됩니다. 

 

그럼 어떤 방식으로 파싱을 하게 되는것인가?

 

일단 findBy나 orderBy와 같은 접두어들은 메소드에서 분리시키고 나머지 부분을 파싱하게 됩니다.

 

findByUserName을 예를 들어 설명하자면 findBy는 분리시키고 UserName만 따로 파싱을 한 후 쿼리를 만든다고합니다.

 

 

 

자세한건 아래 글을 참고하시면 좋을것 같습니다.

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

'Spring' 카테고리의 다른 글

JPQL의 특징  (0) 2021.07.21
QueryDSL은 왜 Q-Class를 사용할까?  (1) 2021.07.15
QueryDSL 삽질기  (0) 2021.07.04
SpringDataJPA에서 Custom 할때 지켜야하는 규칙  (1) 2021.06.27