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

석민님의 프로필 이미지
석민

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

영속성 컨텍스트 2

엔티티매니저 동시성 문제

해결된 질문

작성

·

288

0

강의 잘듣고 있습니다. 

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

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

답변 3

1

석민님의 프로필 이미지
석민
질문자

아 그렇군요!

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

1

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

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

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

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

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

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

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

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

감사합니다.

0

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

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

석민님의 프로필 이미지
석민

작성한 질문수

질문하기