커맨드성
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
선생님들.
8:20 이 때 쿼리랑 커맨드 성을 분리하라. 이 말이
트랜잭션 때문에 그런건가요?
그러니까 쿼리는 날리면 바로 flush가 되기 때문에 상관없는데, 말하시는 사이드이펙트라는게
그 영속성 컨텍스트 안에 있다가 트랜잭션 commit 시점에 모든 것이 다 DB로 날라가니까,
Member를 직접 주게 되면 주소를 주는 것 이기때문에, 영속성 컨텍스트에도 영향을 미쳐, 뭔가 저렇게 save 해놓고 그 member를 직접 다루게 되면 save하는 그 값에도 영향이 있을 수 있기 때문에 그런건가요?
답변 1
1
안녕하세요. 궁금이님, 공식 서포터즈 y2gcoder입니다.
저도 궁금이님의 질문을 보고 생각해봤습니다. 사이드 이펙트는 결국 의도와 다르게 동작하는 것을 의미하기 때문에 여기서는 개발자의 의도와 다르게 작동할 수도 있는 부분도 사이드 이펙트에 포함된다고 생각합니다.
그런 의미에서 만약 해당 save로 받은 Member 객체를 트랜잭션이 걸려있지 않은 서비스에서 사용했을 상황을 생각해봤습니다. 이 때 서비스 로직에서 저장해온 Member 객체의 상태값을 업데이트하려고 하면, 해당 객체의 상태는 업데이트되지만 DB에서는 반영되지 않을 것입니다. 반면에 객체 그대로가 아닌 식별자만 리턴으로 줬을 때는 개발자가 이를 인지하고 미리 상태값을 바꾼 Member 객체를 save하는 방향으로 로직을 수정할 수 있을 것 같습니다.
궁금이님께서 말씀하신 부분이랑 맥락이 비슷한 것 같습니다.
감사합니다.
sdk 설정 오류
0
53
2
오탈자 - @Transactional
0
56
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
64
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
183
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
142
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
103
1
멤버서비스테스트 부분에서 막힙니다.
0
165
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
120
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
114
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
109
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
77
2
Repository에서 EntityManager 주입 방식 차이
0
90
1
롬복과 사용자 정의 setter 메서드
0
72
1
주문 목록 조회 fetch join 질문드립니다
0
82
1
dirty checking 질문드립니다.
0
83
1
동시성 관련 질문입니다
0
75
1





