인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

2010psw님의 프로필 이미지
2010psw

작성한 질문수

실전! 스프링 데이터 JPA

영속성 컨텍스트 관련 질문입니다.

작성

·

210

0

혹시 트리거를 사용하게 되면 영속성 컨텍스트를 통해 데이터가 바뀌는 것이 아닌데

마이바티스/혹은 데이터베이스를 직접 조작하는것처럼 적용되는지 궁금해서 질문남깁니다.

오늘 데이터상 오류를 발견하고

1주일전의 데이터를 수정했을 때 트리거를 적용시켜서

1주일 전부터 오늘까지의 데이터를 수정하게 된다면

영속성 컨텍스트는 어떻게 적용이 되나요??

예를 들어서

dataA.getTemp() = 100 인 상태에서

dataB의 어떠한 데이터를 변경했을 때 트리거가 동작해서 dataA의 Temp가 변경된다면

영속성컨텍스트는 트리거에 의한 데이터 변경도 감지할 수 있나요?

답변 1

1

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

안녕하세요. 2010psw님

영속성 컨텍스트는 트리거 뿐만 아니라 외부에서 발생한 SQL의 데이터 변경을 감지할 수 없습니다.

dataA.getTeam() = 100인 상태에서

다른 요청에 의해서 dataA의 값이 200으로 변경되어도 dataA는 변경된 내용을 인식할 수 없습니다.

그런데 생각해보시면 이것은 영속성 컨텍스트 만의 문제는 아닙니다.

우리가 개발을 할 때 JPA를 전혀 사용하지 않고 SQL을 직접 사용해도 동일한 문제가 발생합니다.

예를 들어서

dataA를 조회하는 쿼리를 실행해서 

dataA.getTeam() = 100인 상태를 만듭니다.

그 다음에 다른 요청에 의해서(다른 트랜잭션) dataA의 값을 200으로 변경해도

dataA의 값을 조회하면 100인 상태로 남아있게 됩니다.

그래서 이런 문제는 락을 걸거나 다른 방법으로 풀어야 합니다.

감사합니다.

2010psw님의 프로필 이미지
2010psw

작성한 질문수

질문하기