• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

20.11.26 11:11 작성 조회수 106

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인 상태로 남아있게 됩니다.

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

감사합니다.