엔티티매니저 동시성 문제
강의 잘듣고 있습니다.
1. 엔티티 매니저를 사용할 시에, 쓰레드가 안전하지 않다, 동시성 문제가 발생할 수 있다. 라는 내용을 책에서 본적이 있습니다. 뭔가 동시성 문제가 발생한다면,
한개의 리퀘스트에서 생성하는 1차캐시 내에서 동시성 문제가 발생하진 않을 것 같고, 애플리케이션이 동작하는 동안 여러 클라이언트가 접근할 수 있는, 2차캐시에서 발생할 것 같다는 생각이 들었습니다. 혹시 제 생각이 맞을까요? ㅎㅎ
Answer 3
1
안녕하세요. 석민님 좋은 질문입니다.
실무에서는 JPA를 단독으로 사용하지 않고, 스프링 프레임워크와 함께 사용합니다.
스프링 프레임워크는 엔티티 매니저를 쓰레드 안전하게 동작하도록 지원해줍니다.
(쉽게 이야기해서 여러 고객이 동시에 요청해도, 각 요청 트랜잭션마다 서로 다른 엔티티 매니저를 할당합니다.)
따라서 실무에서 엔티티 매니저에 동시성 문제가 발생하는 일은 거의 없습니다.
반면에 스프링을 사용하지 않고, 엔티티 매니저를 직접 생성하고 관리할 때는 동시성 문제가 발생할 수 있습니다. 하나의 엔티티 매니저를 생성해서 공유변수 같은 곳에 넣어버리면 큰일 나는 것이지요.
여기서 설명드린 내용과 2차캐시는 관련이 없습니다.
감사합니다.
실무 조언 관련 질문입니다.
0
41
1
H2데이터베이스 파일 생성
0
51
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
49
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
48
1
JPQL 메소드와 락
0
52
1
Delivery @OneToOne
0
57
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
89
2
UnsupportedOperationException 발생
0
82
3
H2 Database 연결이 안됩니다.
0
87
2
연관관계 매핑 질문드립니다.
0
82
2
h2데이터베이스 실행오류
0
105
2
persistence.xml
0
103
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
77
1
영속성 컨텍스트
0
62
1
JPA 프록시
0
89
1
Native Query와 MyBatis
0
63
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
82
1
임베디드 타입 예시 코드 관련 질문
0
112
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
90
3
인텔리제이 패키지 커서 단축키 질문
0
106
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
136
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
68
1
임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.
0
95
1
데이터베이스가 초기화되는 것 같아요
1
177
2

