엔티티매니저 동시성 문제
강의 잘듣고 있습니다.
1. 엔티티 매니저를 사용할 시에, 쓰레드가 안전하지 않다, 동시성 문제가 발생할 수 있다. 라는 내용을 책에서 본적이 있습니다. 뭔가 동시성 문제가 발생한다면,
한개의 리퀘스트에서 생성하는 1차캐시 내에서 동시성 문제가 발생하진 않을 것 같고, 애플리케이션이 동작하는 동안 여러 클라이언트가 접근할 수 있는, 2차캐시에서 발생할 것 같다는 생각이 들었습니다. 혹시 제 생각이 맞을까요? ㅎㅎ
Answer 3
1
안녕하세요. 석민님 좋은 질문입니다.
실무에서는 JPA를 단독으로 사용하지 않고, 스프링 프레임워크와 함께 사용합니다.
스프링 프레임워크는 엔티티 매니저를 쓰레드 안전하게 동작하도록 지원해줍니다.
(쉽게 이야기해서 여러 고객이 동시에 요청해도, 각 요청 트랜잭션마다 서로 다른 엔티티 매니저를 할당합니다.)
따라서 실무에서 엔티티 매니저에 동시성 문제가 발생하는 일은 거의 없습니다.
반면에 스프링을 사용하지 않고, 엔티티 매니저를 직접 생성하고 관리할 때는 동시성 문제가 발생할 수 있습니다. 하나의 엔티티 매니저를 생성해서 공유변수 같은 곳에 넣어버리면 큰일 나는 것이지요.
여기서 설명드린 내용과 2차캐시는 관련이 없습니다.
감사합니다.
벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?
0
39
2
inheritance startegy 선택시 고려사항
0
26
1
Entity 동등성 비교
0
27
1
실무 조언 관련 질문입니다.
0
52
1
H2데이터베이스 파일 생성
0
61
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
59
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
58
1
JPQL 메소드와 락
0
57
1
Delivery @OneToOne
0
64
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
98
2
UnsupportedOperationException 발생
0
89
3
H2 Database 연결이 안됩니다.
0
98
2
연관관계 매핑 질문드립니다.
0
88
2
h2데이터베이스 실행오류
0
110
2
persistence.xml
0
113
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
84
1
영속성 컨텍스트
0
70
1
JPA 프록시
0
100
1
Native Query와 MyBatis
0
74
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
94
1
임베디드 타입 예시 코드 관련 질문
0
121
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
97
3
인텔리제이 패키지 커서 단축키 질문
0
110
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
149
1

