inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

댓글 삭제 API 추가

서비스 계층에서 삭제시 @Transactional 사용에 관해

576

작성자 없음

작성한 질문수 0

0

- 검색해보았으나, 원하는 결과를 찾지 못했습니다. 검색어: 서비스 계층에서의 @Transactional 사용 기준

 ``` java

@Transactional
public void write(Long postId, CommentCreate request) {
Post post = postRepository.findById(postId).orElseThrow(PostNotFound::new);

Comment comment = Comment.builder()

.post(post)

.author(request.getAuthor())
.password(request.getPassword())
.content(request.getContent())
.build();

post.addComment(comment);

}

public void delete(Long commentId, CommentDelete request) {
Comment comment = commentRepository.findById(commentId).orElseThrow(CommentNotFound::new);


commentRepository.delete(comment);
}

```

서비스 계층에서 댓글 작성의 경우 @Transational 적용했지만, 삭제의 경우 적용하지 않았는데 강의에서 이 두 경우의 차이에 대해 이해해야 하고, 찾아보라고 이야기해주셨습니다. 지금까지 제가 공부한 내용에 비추어보면 서비스 게층의 생성 및 삭제의 경우모두 @Transcational 어노테이션을 항상 사용해 왔습니다. 왜냐하면, 수정 삭제의 경우 하나의 트랜잭션에서 시작 및 종료되어야 하기 때문이라고 생각했습니다.

구글링도 해보았는데, 납득할만한 이유를 찾지 못하여 호돌맨님 및 수강생분들에게 질문드립니다.

vue.js aws spring-boot jpa spring-security

답변 2

0

호돌맨

앗.. 이거 답변 안달았네.. ㅠㅠ
위 예제에서 글 삭제시에는 @Transactional은 필요가 없습니다.

감사합니다.

0

인프런 AI 인턴

안녕하세요 sdsd98987 님, 인프런 AI 인턴이에요.
서비스 계층에서의 @Transactional 사용에 관한 질문이시군요.
일반적으로 서비스 계층에서는 데이터베이스 트랜잭션을 관리하기 위해 @Transactional 어노테이션을 사용합니다.
댓글의 작성과 삭제를 살펴보면, 작성은 트랜잭션 내에서 필요한 데이터를 저장하고, 삭제는 트랜잭션 내에서 데이터를 삭제하는 작업으로 이루어집니다.
따라서, 이 두 경우 모두 @Transactional을 사용하는 것이 좋습니다.
삭제의 경우 트랜잭션을 사용하지 않는다면, 예기치 못한 상황이 발생할 수 있습니다.
하지만, 예외적인 경우에는 트랜잭션을 사용하지 않을 수도 있습니다. 이 때는 특별한 이유가 있을 것이므로, 해당 코드와 프로젝트의 상세한 내용을 살펴봐야 합니다.
또한, 삭제 메소드에서 삭제 이외의 다른 작업이 필요하다면 트랜잭션을 적절히 사용하여 원자성과 일관성을 보장할 수 있습니다.
강의에서 이 두 경우의 차이에 대해 자세히 설명하지 않았다면, 질문하기를 통해 교육자에게 직접 문의해보시는 것을 추천드립니다. 감사합니다!

Deprecated 관련 사항들

0

100

2

깃헙 collaboator 초대 관련

0

87

1

강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다

0

157

2

logout 후에 login 페이지 이동은 어디서 시켜주는건가요?

0

229

1

다중 데이터를 삭제 할 때

0

270

2

querydsl Q class 이슈

0

414

2

Windows WSL Vue 설정

2

246

1

Dip, @transactional

0

187

1

[vite] http proxy error: /auth/login

0

1042

2

로그인 하고 나서 GET요청으로 메인페이지 요청

0

234

2

GitHub Collaborator 초대 관련

0

256

2

Window에서 Vue.js 설정

0

321

2

(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"

0

713

2

collaboator로 초대받을 수 있을까요??

0

283

2

SecurityMockContext 로부터 유저 정보를 가져오기

0

261

1

given 부분이 길어질 때 어떻게 처리하면 좋을까요?

0

317

1

섹션9 프론트의 코드를 보고싶습니다,,,

0

423

1

Spring Security - defaultSuccessUrl 질문

0

625

1

강의 화면이 나오지 않습니다. 음성과 자막만 나와요

0

302

1

JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ

0

689

2

ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상

0

1179

2

섹션10 언제 나오나요?

0

484

1

CommentService에서 Repository를 호출하지 않는데도

0

342

1

Editor....를 활용한 패턴에 질문있습니다.

0

494

1