Access intent and isolation level
Access intent allows developers to configure applications so that the EJB container can make performance optimizations for entity beans.
A policy is acted upon by either the combination of the EJB container and Persistence Manager for...
- container-managed persistence (CMP) entities
- Bean-managed persistence (BMP) entities
Access intent policies apply to entity beans only.
Predefined access intent policies
Seven predefined access intent policies are available. The policies are composed of different attributes. The access type is of primary interest and controls the isolation level, lock type, and duration of locks obtained when bean data is read from the database.
A pessimistic access type indicates to hold locks for the duration of the transaction under which the data loads. An optimistic type indicates to drop locks immediately after the data is read from the backend. A read type indicates that the run time must not allow updates to the data; any attempt to do so on data read under a read type results in an exception. Update types permit you to change data.
Though a pessimistic update policy is designed to hold update locks on data records, it does not block threads with other policies that try to access the same data records. When two threads that run pessimistic update policies access a given record, they serialize (but not block) other threads that run pessimistic read or optimistic policies and try to access the same record.
The seven access intent policies...
- wsPessimisticUpdate
Access type = Pessimistic update
Collection scope = Transaction
Collection increment = 1
Resource manager prefetch increment = 0
Read ahead hint = null
- wsOptimisticUpdate
Access type = Optimistic update
Collection scope = Transaction
Collection increment = 25
Resource manager prefetch increment = 0
Read ahead hint = null
- wsOptimisticRead
Access type = Optimistic read
Collection scope = Transaction
Collection increment = 25
Resource manager prefetch increment = 0
Read ahead hint = null
- wsPessimisticRead
Access type = Pessimistic read
Collection scope = Transaction
Collection increment = 25
Resource manager prefetch increment = 0
Read ahead hint = null
- wsPessimisticUpdate-Exclusive
Access type = Pessimistic update
Exclusive = true
Collection scope = Transaction
Collection increment = 1
Resource manager prefetch increment = 0
Read ahead hint = null
- wsPessimisticUpdate-NoCollision
Access type = Pessimistic update
No collision = true
Collection scope = Transaction
Collection increment = 25
Resource manager prefetch increment = 0
Read ahead hint = null
- wsPessimisticUpdateWeakestLockAtLoad (default)
Access type = Pessimistic Update
Promote = true
Collection scope = transaction
Collection increment = 25
Resource manager prefetch increment = 0
Read ahead hint = null
Note that to support connection sharing, ensure that all data loaded in the same transaction is under the same isolation level. Verify that all participating methods that drive loads are configured with either a pessimistic access type or an optimistic access type.
Sub-topics
Access intent -- isolation levels and update locks
Custom finder SQL dynamic enhancement
Related concepts
Access intent policies
Related tasks
Applying access intent policies to methods