서비스 계층에서 삭제시 @Transactional 사용에 관해
576
작성자 없음
작성한 질문수 0
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세요.
- 검색해보았으나, 원하는 결과를 찾지 못했습니다. 검색어: 서비스 계층에서의 @Transactional 사용 기준
문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요.
``` 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 어노테이션을 항상 사용해 왔습니다. 왜냐하면, 수정 삭제의 경우 하나의 트랜잭션에서 시작 및 종료되어야 하기 때문이라고 생각했습니다.
구글링도 해보았는데, 납득할만한 이유를 찾지 못하여 호돌맨님 및 수강생분들에게 질문드립니다.
답변 2
0
안녕하세요 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





