안녕하세요. hia의 개발 story입니다.
이번에는 쿼리 메서드를 이용하여 메서드 이름을 'deleteBy'로 시작하면 특정 조건에 맞는 데이터를 삭제할 수 있습니다.
이를 위해 만들어 둔 Repository interface에 아래와 같이 메서드를 작성해 줍니다.
public interface SampleRepository extends JpaRepository<Sample, Long> {
void deleteSampleByIdLessThan(Long l);
}
테스트 코드를 작성하여 메서드를 테스트해보도록 합시다.
@Commit
@Transactional
@Test
public void testDeleteQueryMethod(){
sampleRepository.deleteSampleByIdLessThan(10l);
}
이때 @Commit 어노테이션과 @Transactional 어노테이션이 같이 작성되어야 하는데
이는 deleteBy를 이용할 때 select를 이용해 데이터를 가져온 후 하나씩 지우기 때문입니다.
따라서 @Transactional 어노테이션이 빠지게 되면 에러가 발생하므로 주의해 줍니다.
또한 @Commit 어노테이션이 빠지면 결과값이 commit 되지 않고 rollback 되기 때문에 이 또한 주의해 줍니다.
결과는 아래와 같이 나오며 보이는 것 처럼 sample 테이블에서 우선 select를 한 뒤 하나씩 지워주게 됩니다.
'Springboot' 카테고리의 다른 글
[Spring Boot] Spring Boot + Thymeleaf 구조에서 decorate를 이용하여 layout 설정하기 (0) | 2023.08.08 |
---|---|
[Spring Boot] @Query 어노테이션을 이용한 Spring JPA 예제 (0) | 2023.06.13 |
[Spring Boot] JpaRepository에서의 쿼리메서드 (0) | 2023.03.31 |
[Spring Boot] JpaRepository의 페이징 및 정렬 처리 하기 (0) | 2023.03.22 |
[Spring Boot] JpaRepository를 이용한 CRUD 테스트 예제 공부 (0) | 2023.03.21 |