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

Inflearn Community Q&A

leemaru's profile image
leemaru

asked

Java ORM Standard JPA Programming - Basics

Persistence Context 2

엔티티매니저 동시성 문제

Resolved

Written on

·

343

0

강의 잘듣고 있습니다. 

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

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

javaJPA

Answer 3

1

leemaru님의 프로필 이미지
leemaru
Questioner

아 그렇군요!

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

1

yh님의 프로필 이미지
yh
Instructor

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

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

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

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

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

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

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

감사합니다.

0

yh님의 프로필 이미지
yh
Instructor

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

leemaru's profile image
leemaru

asked

Ask a question