게시글을 수정하는 경우에, 이미 존재하는 URL을 삭제하고 다시 전달받은 URL을 추가해주는 방식으로 구현하기로 했다.
(이미 존재하는 URL와 새롭게 전달받은 URL를 하나하나 비교하는 방법이 더 비효율적일 거라 생각했기 때문에)
이때 해당 post의 url을 모두 찾아내어 삭제해야하는데 어떤 방식을 사용하는 것이 효율적일지에 대해 고민하게 되었다.
delete 메소드를 사용 - deleteAllByPrfPostId@Query를 사용하여 직접 delete 쿼리를 작성이 블로그에서 그 주제에 대해서 매우 잘 작성해주셨다.
1번보다 2번이 훨씬 효율적이라는 것을 알게 되었고, 쿼리문이 출력되는 것을 자세히 보지 않았었는데 이번 기회로 쿼리가 어떤 방식으로 작동되는지 자세히 봐야겠다는 생각도 들었다.
✔️ ERROR
org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [delete from com.seb006.server.url.entity.Urls u where u.prfPost.id = :postId]
https://stackoverflow.com/questions/44022076/jparepository-not-supported-for-dml-operations-delete-query
https://stackoverflow.com/questions/10220262/updating-boolean-value-in-spring-data-jpa-using-query-with-hibernate
@Query를 사용해 update, delete 시에는 @Modifying과 @Transactional 어노테이션을 추가해주어야 한다.@Modifying 어노테이션은 해당 쿼리가 수정 쿼리임을 spring에 알려주고 DML 작업을 허용하게 해준다.@Transactional 도 필수적으로 붙여야하는 건지는 모르겠다.(더 구글링해보기)