Spring Data는 Repository의 메소드명으로 쿼리를 생성할 수 있는 쿼리 메소드 기능을 제공한다. 복잡한 쿼리문 대신 마치 영어 문장을 쓰듯 원하는 쿼리를 바로 만들어 사용할 수 있다.
`interface PersonRepository extends Repository<Person, Long> { List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname); // Enables the distinct flag for the query List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname); List<Person> findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname); // Enabling ignoring case for an individual property List<Person> findByLastnameIgnoreCase(String lastname); // Enabling ignoring case for all suitable properties List<Person> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname); // Enabling static ORDER BY for a query List<Person> findByLastnameOrderByFirstnameAsc(String lastname); List<Person> findByLastnameOrderByFirstnameDesc(String lastname); }`
그런데 이게 Spring Data JDBC에서는 사용이 불가능하다. 분명 레퍼런스에서는 명시하고 있는데도 말이다.
기능 자체는 최근 이슈를 통해 뒤늦게 구현되었고 해당 수정사항이 반영된 Spring Data JDBC 1.1.7 버전이 릴리즈 되었지만, 어째선지 아직 사용할 수는 없는 상태인 듯 하다.
남용하면 쿼리문을 직접 명시하는 것에 비해 가독성이 떨어진다는 비판도 있지만, 없는 것보단 선택지가 있는 게 낫지. 곧 사용할 수 있게 되기를 바란다.
Comments powered by Disqus.