액세스 인텐트 서비스
액세스 인텐트 서비스를 사용하여 개발자는 애플리케이션의 지속성 관리를 정확하게 조정할 수 있습니다.
액세스 인텐트를 통해 개발자는 애플리케이션을 구성할 수 있으므로 EJB(Enterprise JavaBeans) 컨테이너 및 에이전트는 엔티티 Bean 액세스에 대해 성능을 최적화할 수 있습니다. 엔티티 Bean 메소드는 액세스 인텐트 정책으로 구성됩니다. 정책은 WebSphere® EJB 컨테이너와 지속성 관리자(CMP(Container Managed Persistence) 엔티티용)를 조합하거나 BMP(Bean Managed Persistence) 엔티티에서 직접 수행됩니다. 액세스 인텐트 정책은 엔티티 Bean에만 적용됩니다.
사전 정의된 액세스 인텐트 정책
7개의 사전 정의된 액세스 인텐트 정책을 사용할 수 있습니다. 정책은 다른 속성으로 구성됩니다. 액세스 유형은 1차 관심사로서, 격리 레벨과 데이터베이스에서 Bean 데이터를 읽을 때 얻어지는 잠금의 유형 및 지속 기간을 제어합니다.
비관적 액세스 유형은 데이터가 로드되는 트랜잭션 지속 기간 동안 잠금이 유지되는 것을 나타냅니다. 낙관적 유형은 잠금이 백엔드에서 데이터를 읽은 후 바로 삭제되어야 함을 표시합니다. 읽기 유형은 런타임이 해당 데이터의 업데이트를 허용해서는 안됨을 표시하며 읽기 유형의 데이터 읽기에서 업데이트 시도를 계속할 경우 예외가 발생합니다. 업데이트 유형을 사용하면 데이터를 변경할 수 있습니다.
업데이트 중 비관적 정책이 데이터 레코드에 대한 업데이트 잠금을 보유하도록 설계되었지만, 같은 데이터 레코드에 액세스하려는 다른 정책으로 스레드를 차단하지는 않습니다. 비관적 업데이트 정책을 실행하는 두 개의 스레드가 지정한 레코드에 액세스하는 경우, 비관적 읽기 또는 낙관적 정책을 실행하는 다른 스레드를 직렬화하고(차단하지는 않음) 동일한 레코드 액세스를 시도합니다.
7개의 액세스 인텐트 정책 및 해당 속성 정의는 다음과 같습니다.- wsPessimisticUpdate
- 액세스 유형 - 비관적 업데이트
- 콜렉션 범위 = 트랜잭션
- 콜렉션 증분 = 1
- 자원 관리자 프리페치 증분 = 0
- 미리 읽기 힌트 = 널
- wsOptimisticUpdate
- 액세스 유형 = 낙관적 업데이트
- 콜렉션 범위 = 트랜잭션
- 콜렉션 증분 = 25
- 자원 관리자 프리페치 증분 = 0
- 미리 읽기 힌트 = 널
- wsOptimisticRead
- 액세스 유형 = 낙관적 읽기
- 콜렉션 범위 = 트랜잭션
- 콜렉션 증분 = 25
- 자원 관리자 프리페치 증분 = 0
- 미리 읽기 힌트 = 널
- wsPessimisticRead
- 액세스 유형 = 비관적 읽기
- 콜렉션 범위 = 트랜잭션
- 콜렉션 증분 = 25
- 자원 관리자 프리페치 증분 = 0
- 미리 읽기 힌트 = 널
- wsPessimisticUpdate-Exclusive
- 액세스 유형 - 비관적 업데이트
- 독점 = true
- 콜렉션 범위 = 트랜잭션
- 콜렉션 증분 = 1
- 자원 관리자 프리페치 증분 = 0
- 미리 읽기 힌트 = 널
- wsPessimisticUpdate-NoCollision
- 액세스 유형 - 비관적 업데이트
- 충돌 없음 = true
- 콜렉션 범위 = 트랜잭션
- 콜렉션 증분 = 25
- 자원 관리자 프리페치 증분 = 0
- 미리 읽기 힌트 = 널
- wsPessimisticUpdateWeakestLockAtLoad
- *기본 정책
- 액세스 유형 = 비관적 업데이트
- 승격 = true
- 콜렉션 범위 = 트랜잭션
- 콜렉션 증분 = 25
- 자원 관리자 프리페치 증분 = 0
- 미리 읽기 힌트 = 널
연결 공유를 지원하기 위해 개발자는 동일한 트랜잭션에 로드된 모든 데이터가 동일한 격리 레벨에 있도록 해야 합니다. 로드를 구동시키는 모든 참여 메소드가 비관적 액세스 유형 또는 낙관적 액세스 유형에 구성되는지 검증하십시오.