작성
·
182
답변 1
0
안녕하세요, ddoddo 님! 공식 서포터즈 codesweaver 입니다.
영속성 컨텍스트는 트랜잭션과 생명주기를 같이합니다.
만일 한개의 요청이 여러 스레드에서 처리될 경우 스레드마다 트랜잭션이 생성되며 영속성 컨텍스트도 생성됩니다.
감사합니다.
안녕하세요 ddoddo님!
아래는 제가 실무에서 시도했다가 필요없어져서 폐기한 방식이긴 합니다.
- 1번의 요청에 최대 1,000개의 주문에 대해 주소 검증이 필요합니다.
- 주소 검증은 외부의 API에서 해야 하는데 서버의 물리적인 거리가 멀어 왕복에 딜레이가 발생하는 상황입니다. (1회 요청에 200ms 딜레이)
- 왕복을 최소화하기 위해 주문을 100개 단위 그룹으로 만듭니다.
- 그리고 주소 검증은 순서가 중요하지 않은 프로세스 이므로 이를 멀티쓰레드로 전송하여 전체 검증 시간을 단축합니다.
실무 코드는 JPA를 사용하고 있지 않아 영속성 컨텍스트와 무관하긴 하나,
JPA를 사용하고 있었다면 각 트랜잭션 마다 영속성 컨텍스트도 생성되었을 것입니다.
감사합니다.
답변 감사합니다. 추가로 궁금한 점이 있습니다.
한 요청이 Query1, 2, 3, 4, 5 총 5개의 쿼리를 수행해야하는데
Query1,2,3 이 논리적작업단위로 서비스계층에서 @Transactional가 적용된 메소드A 로 묶이고
Query4,5이 또 @Transactional로 묶여 있는 메소드B로 묶인 상황에서
Controller에서 Service의 메소드 A, B를 연이어서 호출하는 경우를 생각하고 처음 질문을 드렸습니다.
위 상황과 달리 답변내용의 상황은 어떨 때 벌어질 수 있는 것인지 궁금합니다.