inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

JPA를 이용한 사용자 추가와 삭제 - HTTP POST/DELETE method

delete 로직 문의

326

hibnos

작성한 질문수 4

0

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

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

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

rest-api spring-boot

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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

JPA

0

57

1

jpa dependency를 추가하고 SecurityConfig클래스에서 오류가 납니다.

0

68

1

웹 브라우저 400 bad request

0

71

1

@Size는 되는데 @Past는 안 됩니다.

0

61

1

pdf 자료는 없나요?

0

73

2

locale 정보가 null 이면 무조건 messages_ko.properties이 호출 되는 문제

0

87

2

Swagger 강의, Unable to infer base url 이거 뜨시는 분들 도움되시라고

0

118

1

강의에서나온 화면 피피티

0

158

1

HelloWorldBean 관련 에러

0

183

2

Swagger API 3.x 오류..

0

219

1

java: variable message not initialized in the default constructor 에러는 어찌하면 좋을까요?

1

282

1

현재 GIT에 올리신 소스를 실행해봤습니다.

0

189

2

고양이 소리가 귀엽네요 !!

0

137

2

git에서 소스받고 실습중인데

0

117

1

post가 안되요

0

102

1

한국어 같은 경우 언어코드인 messages_ko.properties 로 생성하는게 더 좋지 않나요?

0

167

2

리턴타입으로서 EntityModel<User> 와 ResponseEntity질문

0

104

1

예외처리쪽 관련 질문있습니다.

0

159

2

엔티티가 바로 응답으로 나가도 되나요??

0

221

2

안녕하세여 Cannot invoke "co.kr.joneconsulting.resfulservice.repository.PostRepository.save(Object)" because "this.postRepository" is null

0

135

2

사용자 등록하고 나서 H2 에서 보면 신규 사용자의 password, ssn 이 null 로 되어 있습니다.

0

140

2

ApplictionContext 질문

0

192

2

롬북이 안먹히는것같아요

0

156

1

인텔리제이에서스프링부트 파일 실행하면

0

240

1