인프런 커뮤니티 질문&답변

clllickme님의 프로필 이미지
clllickme

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

OSIV 관련하여 질문드립니다!

작성

·

373

0

User user = userQueryService.findById(userId);
postService.createPost(user)

OSIV를 끈채로 특정 유저가 게시글을 작성하는 로직을 Command와 Query를 분리하여 위와 같이 컨트롤러에 작성하고자 합니다.

OSIV가 꺼져있기에 user는 준영속상태로, createPost 트랜잭션 안에서 user를 변경하지 않고 post 생성에만 사용한다면 위와 같이 사용하는게 맞는지 궁금합니다!

만약 createPost에서 user를 변경하는 상황이 발생한다면, 예외가 발생하는지도 궁금합니다!

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. clllickme님

createPost 트랜잭션 안에서 준영속 상태인 User를 사용할 수 있습니다.

단 준영속 상태이기 때문에 User의 데이터를 변경해도 아무런 변화가 발생하지 않습니다.

이런 경우는 Post -> User를 참조할 때 참조값을 넣는 정도로 사용할 수 있습니다.

User의 데이터도 변경해야 한다면 트랜잭션 안에서 User를 다시 조회하는 것을 권장합니다.

감사합니다.

clllickme님의 프로필 이미지
clllickme

작성한 질문수

질문하기