• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

2가지 질문이 있습니다.

19.09.12 19:57 작성 조회수 122

0

1. A라는 유저와 B라는 유저가 같은 테이블에서 같은 컬럼값 1을 가지고 왔습니다.

A는 1에 1을 더해서 2를 저장하려고 하고,

B는 1이 2가되는 것을 모르고 1에 2를 더해서 3을 만들려고 합니다. 

이렇게 서로가 값을 가지고 있을 때 락을 걸어줘야할 거 은데 JPA로는 어떤 방법이 있을까요?

2. 테이블에서 값이 1 -> 2를 참조하고, 2가 3을 참조하면 3 , 2, 1의 순서로 지울수가 있습니다. 그런데 유저가 실수로 3->1로 참조하게되면 1 , 2 , 3서로가 삭제가 될 수 없는 상태가 되는데 JPA로는 어떤 방식으로 막을 수 있을까여?

p/s백기선님의 인프런 강의 모두 결재한만큼 굉장히 도움이 되고 있습니다. 위에 대한 답변 기다리겠습니다 ㅎㅎ

답변 1

답변을 작성해보세요.

0

1. 트랜잭션에 대해서 공부하셔야 할거 같습니다. 트랜잭션에서 isolation level이라는게 있으니까 그걸 중심적으로 살펴보세요. Isolation Level은 스프링 트랜잭션, JPA, JDBC 모두 설정할 수 있습니다.

2. 유저가 실수로 스키마에 순환 참조 구조를 만든다는 것인가요? 그리고 그런 구조를 만드는 걸 JPA로 어떻게 막을 수 있냐고 물으시는건가요? 유저가 스키마를 만드는데 문법적인 오류만 없다면 JPA는 감지하지 못할겁니다. JPA가 아니라 JDBC를 써도 방법이 없을거 같습니다.