IT/프로그래밍

[Java/Hibernate] 검색을 자유롭게 하고싶은데.. 좋은 방법이 없을까?

홀롤록 2024. 3. 28. 09:03
반응형

현재 회사에서 사용하는 언어와 주 포지션으로 하고 있는 언어의 차이가 있어 주 사용 언어는 잊지 않도록 개인 프로젝트를 많이는 아니더라도 조금씩만 하고있다. 하루에 1시간.. 정도..? 그러다 아래의 고민이 생겨 처리 방법을 찾다가 그렇구나 싶어 메모해둔다

 

현재 Spring Boot3, JPA 를 활용해 게시판 비슷한 걸 해보고 있다.

템플릿 형식으로 내 개인 repo 에 남겨두고 싶어서.. 페이징 처리를 최근에 하고 있는데 기능이 확실히 좋더라

Pageable 이라는 인터페이스로 편하게 사용할 수 있고, 요청 받을 땐 편하게 받고 후에 PageRequest class를 통해 

쉽게 변형도 가능했다.

 

이제 문제가 시작됐다. 검색어 처리에 대해 일반적인 검색을 과거에 난 흔히 말하는 날쿼리(SQL) 을 작성하는
MyBatis 방식을 많이 사용해왔고 최근 회사에서도 그렇게 사용했었기에 저 방법이 익숙하다.

 

JpaRepository > Containig 

그래서 찾아보니 JpaRepository 에 있는 Containig 을 통해 %{keyword}% 를 처리한다고 한다. 하지만 이건 어떤 키 타입을 지정하여야만 하는거고 처리할 때 소스코드에 조건문을 통해 모두 분기하여야 하는데 한 두번은 그럴 수 있어도 모든 검색에 대해 저렇게 할 수 없겠다는 생각이 들어 더 찾아봤다.

 

JpaSpecificationExcutor

이를 사용하면 다중필드 검색이 가능하다는 장점이 있고 필터링 조건 메소드만 따로 만들어주면 쉽게 다중필드 검색까지도 지원이 된다고 하며 더 보니, 인프런에 김영한님의 강의를 들은 어느 누군가가 질문을 남겼는데 물론 질문의 제목은 많이 다른 내용이지만 답변만 본다면

인프런 김영한님의 답변 캡처 ( https://www.inflearn.com/questions/16685/comment/42931 )

다른곳에서는 모르겠으나 김영한님이 진행하시는 프로젝트에선 JPA Criteria 는 사용을 금하고 있다고..

 

하지만 한국에서 사용하고 있는 JPA 쪽에서의 유명하신 분께서 말씀하시니.. 가벼운 생각이겠지만 대체로 비슷하게 할 것 같다는 생각이 들어 QueryDSL 을 도입해볼까 라는 생각이 든다.

 

P.S. 하고싶은걸 하려면 계속 설정 변경해야하는 내용만 늘어나는거 같다.. 아직 내가 많이 부족해서겠지..ㅠ

반응형