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

engineer-edu님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

쓰레드 단위에서 업데이트

21.03.27 15:01 작성

·

127

0

안녕하세요 늘 좋은 강의 감사합니다.

한 쓰레드에서 업데이트와 셀렉트를 하는데 업데이트가 되지 않습니다.

1. A테이블에서 find

A엔티티에서 User테이블과 연관된 상태

@Column(name = "user_id", insertable = false, updatable = false)
private Long userId;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false, referencedColumnName = "id")
@JsonIgnore
private User user;

2. User테이블의 컬럼 업데이트

user.setPhone1("010");
userRepository.save(user);

를 하면 User테이블의 컬럼이 업데이트 되지 않습니다.

왜 그런걸까요?

답변 1

0

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

2021. 03. 27. 16:02

안녕하세요. engineer-edu님

@Transactional 안에서 User를 조회하고, 변경했는지 확인해주세요.

JPA의 모든 데이터 변경은 트랜잭션 안에서 처리되어야 합니다.

감사합니다.

engineer-edu님의 프로필 이미지
engineer-edu
질문자

2021. 03. 27. 16:14

안녕하세요 영한님 빠른 답변 감사합니다.

위의 문제는 entityManager.clear();
를 사용했더니 해결되었습니다.

하지만 정확한 이유를 모르겠어요.. 혹시 알려주실 수 있으실까요?

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

2021. 03. 27. 20:14

안녕하세요. engineer-edu님

도움을 드리고 싶은데 설명해주신 내용만 가지고는 답변을 드리기가 어렵습니다.

문제가 되는 부분만으로 실제 동작하는 예제 코드를 만들어서 전체 프로젝트를 압축해서 올려주세요.

추가로 entityManager.clear()를 어디에 적용했을 때는 동작하는지도 주석으로 남겨주세요.

감사합니다.