Springboot

[Spring Boot] 쿼리메서드 - deleteBy 사용하기

Jenny376 2023. 6. 12. 21:22
안녕하세요. 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를 한 뒤 하나씩 지워주게 됩니다.