취업 후 교육기간 거쳐 처음 프로젝트참여중이며 맡은 부분은 공지사항관련 게시판 개발
Rest Api 개발 - 단건 삭제 메소드가 아닌 클라이언트가 선택한 모든 게시물을 일괄삭제할 다중 삭제 메소드 개발 중
(아니 왜 웬만한 강의나 대충검색해서 나오는건 이런거 안가르쳐주냐고)
진행중인 프로젝트 : SpringBoot, JPA, java17, mariaDB 활용
이전까지 개인프로젝트에서는 h2데이터베이스로 연습을 했었고 현재 실무 프로젝트에서는 MariaDB연동해서 사용중..
내가 개발한 일괄삭제메소드는 queryDSL을 사용하지 않고 JPA의 @Query 어노테이션을 사용하여 jpql을 사용하는 방식.
https://jojoldu.tistory.com/235
일괄삭제 메소드관련해서는 위 주소 갓조졸두님의 블로그 글을 참고하시길 바랍니다.
저도 참고하여 개발하였습니다.
실무 개발하면서 느끼는 점은 queryDSL의 중요성을 너무 뼈저리게 느낌
정말 querydsl을 써야하는 이유가 분명히 있다
게시판 검색기능을 개발할 때 여러 검색조건을 적용해야 할 경우
repository 인터페이스에서 extentds하여 JpaRepository 상속받아서 검색기능을 개발할 때
메소드의 제목도 엄청 길어지고 따라서 가독성도 떨어지고 개발할 때 번거로움
예를들어 레포지토리에서
Page<Article> findByArticleTypeAndArticleSortationAndArticleTitleContainingOrArticleContentContainingIgnoreCase(파라미터타입 파라미터, 파라미터타입 파라미터, .......); 이런식으로 queryDSL을 사용하지 않으면 이것보다 더심해질 수 있음.
이를 보완해줄 수 있는 방법이 queryDSL 이다. 여기서는 queryDSL을 다루지 않는다
일괄삭제관련 api 개발 중에 당연(?)스럽게 내가 연습해왔던 메소드를 복붙해서 개발하려고 했다.
board_entity는 @entity를 적용시켜준 클래스이다.
위 사진에 @Query처럼 jpql문법에 맞도록(?) 개발해서 내 토이프로젝트에서는 잘 동작하였었다.
근데 갑자기 왜 에러가 날까??? (mariaDB랑 연동해서 개발하는 것 때문에 그런걸까?)
mariaDB에서는 jpql문법이 안먹히는건가 검색해봤는지만 이유는 나도 잘 모르겠다.....
오류코드를 봤을 때 @Query() 안에 내가 적어놓은 것들이 잘못된걸까 싶어서 다시 곰곰히 찾아본 결과
"delete from board_entity b where b.id in : ids" << 여기서 b.id라고 해둔게 잘못되었다고 느껴짐. 왜냐?
Entity클래스에서 @Column(name="board_id")라고 정의해줘서 b.id가 아닌 b.board_id로 해줘야되지 않겠나 싶었음!
근데 그렇게 수정했었지만 그것도 아니었다...... 아니 도대체 뭐가 문제냐고!!!!!
(postman 활용법은 google검색으로 '^')
postman을 사용하여 나름대로 여러가지 방법으로 계속 테스트했었는데
해결이 안됐다... 초보는웁니다... 도대체 뭐가문제냐고!!
아니 근데
아예 저 @Query어노테이션 안에 b를 없애보니까 갑자기 되는것이 아니겠는가?! - @Query()안에 잘보세요
이렇게하고 postman으로 테스트해보니 아니 이게 웬걸? 성공하는 것이었다!!!
해결은 했지만 솔직히 어리둥절하다. mariaDB가 jpql을 인식하지 못하는건가? h2에서는 잘만됐던건데 흠..
무튼 인텔리제이 하단에 뜨는 query문을 잘봐야된다고 인터넷강의에서 늘 들었던말이지만
잘 볼줄도 몰랐고 와닿지 않았었다. 근데 이제 곰곰히 잘 찾아봐야되겠다고 느낀다
'JPA' 카테고리의 다른 글
Springboot + JPA + mariaDB 간단한 procedure 프로시저 만들고 호출하기 (0) | 2022.10.29 |
---|---|
@RequestParam URL 특수 문자 입력 시 NullPointerException 날 때 특수 문자 Encoding 처리 (0) | 2022.06.22 |