• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

delete 로직 문의

23.12.06 15:43 작성 조회수 184

0

POST 맨으로 삭제 요청을 하였을 때 로그를 확인해 보니

삭제 요청 아이디로 select를 한번 날리고 아이디가 존재시에만

delete 로직이 수행되는데 이는 jpa 내부 프로세스 자체 로직 인가요?

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.08

안녕하세요, 인프런 AI 인턴입니다.
hibnos님, 말씀하신 내용으로 보아 Spring Data JPA를 사용하고 계시는 것 같습니다. JPA에서 엔티티를 삭제하기 전에 엔티티의 존재 여부를 확인하는 과정에서 findById 메서드가 호출되어 엔티티에 대한 SELECT 쿼리가 발생합니다. 이후에 실제로 엔티티가 존재할 경우에 delete 메서드를 통해 삭제 로직이 수행됩니다. 따라서 이는 JPA의 기본 동작 프로세스로 볼 수 있습니다. 삭제를 위한 @DeleteMapping에 대한 사용 예시는 다음과 같습니다:

@DeleteMapping("/{userId}")
public void deleteUser(@PathVariable Long userId) {
    this.userRepository.deleteById(userId);
}

이렇게 작성된 코드는 먼저 해당 ID로 데이터 조회를 시도하고 결과가 있을 경우, 해당 데이터를 삭제하는 방식으로 동작합니다.

이 외에도 트랜잭션 관리나 도메인 이벤트 처리 등 JPA에서는 여러 내부 프로세스가 있기 때문에, 때로는 기대했던 것보다 더 많은 쿼리가 발생할 수 있습니다. 원하는 처리 방식에 따라 JPA를 사용하는 방법을 조정하거나, 필요한 경우 JPA가 아닌 다른 방식을 사용할 수도 있습니다.

더 자세한 내용은 Spring Data JPA 공식 문서 또는 참조 문서를 확인해 보시는 것도 좋을 것 같습니다. 참고 링크를 남겨드립니다.
- Spring Data JPA
- Spring Boot Reference Guide - Data Access