• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

엔티티매니저 동시성 문제

20.11.17 22:38 작성 조회수 206

0

강의 잘듣고 있습니다. 

1. 엔티티 매니저를 사용할 시에, 쓰레드가 안전하지 않다, 동시성 문제가 발생할 수 있다. 라는 내용을 책에서 본적이 있습니다. 뭔가 동시성 문제가 발생한다면,

한개의 리퀘스트에서 생성하는 1차캐시 내에서 동시성 문제가 발생하진 않을 것 같고, 애플리케이션이 동작하는 동안 여러 클라이언트가 접근할 수 있는, 2차캐시에서 발생할 것 같다는 생각이 들었습니다. 혹시 제 생각이 맞을까요? ㅎㅎ

답변 3

·

답변을 작성해보세요.

1

석민님의 프로필

석민

질문자

2020.11.18

아 그렇군요!

학교에서 native jdbc만 사용하다가, jpa를 접하니 헤어나올 수 없도록 재밌습니다. 

1

안녕하세요. 석민님 좋은 질문입니다.

실무에서는 JPA를 단독으로 사용하지 않고, 스프링 프레임워크와 함께 사용합니다.

스프링 프레임워크는 엔티티 매니저를 쓰레드 안전하게 동작하도록 지원해줍니다.

(쉽게 이야기해서 여러 고객이 동시에 요청해도, 각 요청 트랜잭션마다 서로 다른 엔티티 매니저를 할당합니다.)

따라서 실무에서 엔티티 매니저에 동시성 문제가 발생하는 일은 거의 없습니다.

반면에 스프링을 사용하지 않고, 엔티티 매니저를 직접 생성하고 관리할 때는 동시성 문제가 발생할 수 있습니다. 하나의 엔티티 매니저를 생성해서 공유변수 같은 곳에 넣어버리면 큰일 나는 것이지요.

여기서 설명드린 내용과 2차캐시는 관련이 없습니다.

감사합니다.

0

크! 맞습니다. JPA 진짜 제대로 사용하면, 과거로 못돌아갑니다. ㅎㅎ