a) 요청 당. 더 확장 성이 뛰어나고 실제 JDBC 연결 풀링을 허용합니다.
b) 각 요청은 하나의 트랜잭션이됩니다. 이 트랜잭션은 다른 트랜잭션 리소스로 확장 될 수 있습니다. 이 경우 대부분 데이터베이스에 관심이 있습니다. 각 데이터베이스에 대해 세션이 생성됩니다 (데이터베이스가 특정 요청 내에서 액세스된다고 가정). 요청주기의 끝에서 모든 트랜잭션 자원이 확약되거나 없음 (2 단계 확약). 관리 환경 (응용 프로그램 서버)에서 트랜잭션 리소스는 액세스 될 때 현재 스레드에서 발생하는 트랜잭션에 암시 적으로 등록됩니다. 사용자 (응용 프로그램)는 JTA API를 사용하여 경계를 설정하기 위해이 트랜잭션과 상호 작용할 수 있습니다 (UserTransaction 참조).
c) 새로 생성 된 각 세션은 연결 풀에서 연결을받습니다. JTA 트랜잭션 당 각 데이터베이스
전자) 예를 가장 한 최대 절전 모드 세션에서
D). 나는 각 세션이 실제로 DB로 무엇인가를하기 위해 사용된다고 가정한다 (위의 요점 참조). 첫 번째 이유는 응용 프로그램 서버 및 데이터베이스 서버 자원 (CPU, 메모리, 네트워크)의 자연스러운 병목입니다. 두 번째 이유는 데이터베이스 잠금 (트랜잭션 범위)과 조금 간접적으로 사용되는 버전 잠금 체계 (대화 범위)입니다.
독립 실행 형 연결 풀/JTA 구현을 사용해야합니다. 한 가지 예는 XaPool을 사용한 JOTM입니다.그러나, Hibernate는 JOTM과 C3P0과 같은 것들과의 상호 작용을위한 API를 가지고 있습니다.