소개
게시글
질문&답변
2022.10.27
'스프링에서 엔티티 매니저와 영속성 컨텍스트가 N:1'의 의미 질문 드립니다.
좀 더 알아보니 HTTP 요청마다 엔티티매니저 구현체와 영속성 컨텐스트 구현체가 만들어진 이유는 아래와 같이 이해할 수 있었습니다.http 요청이 오면 쓰래드마다 1개의 EntityManager 구현체와 PersistenceContext 구현체가 만들어짐쓰래드간에 EntityManager 객체가 공유되면 안되기 때문에 (동시성 문제)위 질문 상황에서는 5개의 쓰래드를 사용 중이기 때문에 5개의 EntityManager 구현체와 PersistenceContext 구현체가 만들어진것이후 http요청 처리 완료되면 각 EntityManager 구현체와 PersistenceContext 구현체는 필요없으므로 파괴됨 그리고 좀 더 디버거로 살펴보니, 엔티티매니저 proxy 객체로부터 N개의 엔티티매니저 메서드가 호출 되면 각 메서드를 처리할 때 필요한 N개의 익명 객체가 생성되는 것을 알 수 있었습니다.(사진)(사진)그렇다면 '스프링에서 엔티티 매니저와 영속성 컨텍스트가 N:1' 라는걸 다음처럼 이해하면 맞을까요?스프링에서도 다른 환경과 동일하게 (한 개 쓰래드마다) EntityManager 구현체와 PersistenceContext 구현체는 1개씩 생성 (1:1)엔티티매니저의 각 메서드를 처리하는 N개의 익명 객체, EntityManager, PersistenceContext 구현체 (N:1:1) '엔티티 매니저가 N개'라고 할 때 여기서 엔티티 매니저가 정확히 무엇을 의미하는지 알면 될 것 같은데,아래의 후보 중에서 N개가 될만한 것이 익명 객체 밖에 안떠올라서 위처럼 생각했습니다.EntityManager 구현체 (SessionImpl 인스턴스) -> 1개EntityManager 프록시 객체 -> 1개EntityManage의 각 메서드를 처리하는 익명 객체 -> N개 (호출된 메서드의 수) ** 캡처 이미지는 강의 소스코드의 MemberServiceTest를 수정해서 디버그 실행 했습니다.
- 3
- 2
- 436
질문&답변
2022.02.23
new-form.jsp 요청시 jsp파일이 다운로드 관련
저는 스프링 부트 버전을 2.4.3 으로 바꾸니까 제대로 되네요. (원래 2.6.x 로 하고 있었음) (사진)
- 1
- 5
- 1.5K
고민있어요
2022.02.23 18:25
[수업자료 pdf 오타] 24p 파라미터 전송 결과
- 0
- 1
- 137