-
Notifications
You must be signed in to change notification settings - Fork 1
QueryDsl 적용해보기
kimhanui edited this page Jan 10, 2021
·
1 revision
QueryDsl 적용과정이 꽤 복잡했다는 기억때문에 그동안 적용하지 않고 프로젝트를 진행해왔는데(기능구현상 딱히 필요하지도 않았다)
오늘 갑자기 기능을 적용해봐야겠다는 필요성을 느꼈다. 이유는 토큰삭제 요청
때문이었다.
토큰 삭제에 해당하는 로직은 아래와 같았는데 @Query
부분에 작성한 쿼리가 잘못됐는지 토큰이 삭제되지 않았다.
또한 적절한 예외가 발생했어야하는데 예상했던 IllegalArgumentException
예외도 발생하지 않았다.
즉,
- JPQL의
DELETE
문법을 따로 알아야한다는 점 - 예상 가능한
Exception
을 발생시켜야한다는 점
이 두 가지를 만족시키기 위해 QueryDsl
을 적용해보기로 했다.
// repositiory (extends JpaRepository)
@Query("delete from FcmToken t where t.token=:token")
void deleteByToken(@Param("token") String token);
// service
@Transactional
public Long delete(String token) throws Exception {
try {
fcmTokenRespository.deleteByToken(token);
return 1L;
}catch(IllegalArgumentException e)
{
throw new IllegalStateException(ErrorMessage.NoExist("토큰"));
}
}
요청보낼 때
token
이 삭제되었음에도 예외를 발생시키지 않고1
을 반환한다.