[Spring-Boot] 쿼리메서드 사용 시 주의점 및 네이밍 방법

2023. 8. 20. 21:20프로그래밍/웹 개발

기존에는 직접 sql 문을 작성해 쿼리문을 날리곤 했었지만 spring-boot로 프로젝트를 진행함과 동시에 jpa를 사용하게 되면서 쿼리 메서드와 JPQL을 사용하게 됐다.

그러나 쿼리메서드 사용시 스네이크 케이스의 '_' 를 인식하지 못하는 탓인지 프로젝트를 실행할 때 계속 bean객체 생성에 실패하며 오류가 발생했다. Entity 클래스의 @Column으로 설정한 필드명들을 카멜케이스로 바꾼 후 다시 쿼리메서드의 이름을 카멜케이로 지정하니 오류가 해결됐다. 일반적으로 java에서는 카멜케이스를 사용할 것을 권장한다고는 한다. 

현재는 팀 프로젝트가 많이 진행되지 않았기에 db의 필드명들을 모두 바꾸는 작업을 진행해줘도 되지만 만약 그렇게 하기 힘들 경우에는

@Query메서드를 이용해 JPQL을 사용하면 된다. @Query어노테이션이 붙은 메서드는 메서드 이름을 '쿼리 메서드'로 인식하지 않는다. 따라서 필드명에 따른 쿼리 실행문 및 bean 객체 생성에서 에러가 발생하지 않는다. 

 

결론 : JPA를 사용할 때 db 및 클래스 필드 네이밍은 스네이크 케이스보다는 카멜 케이스를 선택하고, 문제 발생시에는 쿼리 메서드 보다는 직접 쿼리문을 작성해(@Query) 사용하자.