Utilizando a intenção de acesso ao WSJPA
A intenção de acesso do Java™ Persistence API (JPA) especifica o nível de isolamento e o nível de bloqueio usado na leitura de dados a partir de uma origem de dados. A intenção de acesso controla o nível de isolamento do Java Database Connectivity (JDBC) e se os bloqueios de leitura, atualização ou exclusivo são necessários quando recuperar dados.
Sobre Esta Tarefa
- A intenção de acesso está disponível para o aplicativo no ambiente do servidor Java EE
- A intenção de acesso é aplicável a métodos da interface do gerenciador de entidade sem consulta. A consulta usa a interface de sugestão de consulta para configurar os valores de isolamento e de bloqueio de leitura.
- A intenção de acesso só está disponível para bancos de dados DB2.
- A intenção de acesso entra em vigor apenas quando o gerenciador de bloqueio pessimista é usado. Inclua o seguinte na lista de propriedades de unidade de persistência. <property name="openjpa.LockManager" value="pessimistic"/>
Intenção de acesso do bean de entidadeWebSphere EJB 2.x | Intenção de acesso da JPA | Description |
---|---|---|
otimista | isolation: Read Committed | Os dados são lidos mas nenhum bloqueio é mantido. O ID da versão é usado na atualização para assegurar a integridade de dados. Outras transações podem ler e atualizar dados. |
lockManager: Optimistic | ||
query Hint: ReadLockMode: READ | ||
pessimistic read | isolation: Repeatable Read | Os dados são lidos com bloqueios compartilhados. Outras transações que tentam atualizar dados são bloqueadas. |
lockManager: Optimistic | ||
query Hint: ReadLockMode: READ | ||
pessimistic update | isolation: Repeatable Read | Os dados são recuperados com bloqueios de atualização ou exclusivos. Outras gravações são bloqueadas até a confirmação. Esta intenção de acesso pode ser usada para serializar o acesso de atualização a dados quando há vários gravadores. |
lockManager: Pessimistic | ||
query Hint: ReadLockMode: WRITE | ||
pessimistic exclusive | isolation: Serializable | Os dados são recuperados com bloqueios de atualização ou exclusivos. Outras gravações são bloqueadas até a confirmação. Esta intenção de acesso pode ser usada para serializar o acesso de atualização a dados quando há vários gravadores. |
lockManager: Pessimistic | ||
query Hint: ReadLockMode:WRITE |
- O TaskName é configurado automaticamente no contêiner EJB quando uma transação inicia o uso da transação local do WebSphere (transação não especificada EJB), de uma transação global JTA em uma Transação Gerenciada por Contêiner (CMT) ou de uma transação global iniciada pelo usuário em uma Transação Gerenciada por Bean (BMT).
- TaskName é configurado manualmente em um aplicativo utilizando a API TaskNameAccessor fornecida para a JPA.
O uso dos nomes de tarefas suporta a especificação da intenção de acesso em um escopo de solicitação em vez de especificá-lo no arquivo persistence.xml, que possui um escopo de aplicativo por todas as entidades. Geralmente uma consulta é contida em um método ou componente que é usado em muitos contextos de transações diferentes. Alguns desses contextos podem requerer intenção de leitura repetitiva e de bloqueio de atualização, mas outros contextos não.
- Um escopo de aplicativo no arquivo persistence.xml. Esses tipos de níveis de isolamento e de bloqueio de leitura são propriedades especificadas no arquivo persistence.xml. Eles se aplicam a todas as entidades que são definidas na unidade de persistência.
- Um escopo de transação no nome da tarefa. As sugestões com escopo definido da transação substituem os valores do escopo do aplicativo.
- Instância de consulta com uma dica de consulta. A dica de consulta pode ser usada para substituir isolation e ReadLockMode para uma determinada instância de consulta. Uma sugestão de consulta substitui o nível de isolamento e os bloqueios de leitura especificados no escopo do aplicativo ou da transação.
Procedimento
- Configurando um TaskName Usando a API TaskNameAccessor Essa tarefa explica como usar a API TaskNameAccessor para configurar o TaskName JPA no tempo de execução.
- Especificando TaskName em uma Unidade de Persistência JPA Essa tarefa explica como especificar um TaskName na unidade de persistência JPA.