소개
게시글
질문&답변
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
- 418
질문&답변
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
- 129