De que se trata o artigo:

Este artigo apresenta formas de se trabalhar com transações em conjunto com o Java EE, as características básicas de uma transação, a JPA e os modos de gerenciamento de transações CMT e BMT.

Em que situação o tema é útil:

O tema é útil para desenvolvedores e projetistas de sistemas que trabalham com EJBs e necessitam de técnicas para o controle de transações, além dos conhecimentos adicionais sobre o comportamento de transações no Java EE, a manipulação das interfaces e anotações JTA, e os modos de gerenciamento CMT e BMT.

Resumo DevMan:

O Java EE, por meio da JTA, possui dois modos simples para o gerenciamento de transações: o configurável (CMT) e o programável (BMT). Dessa forma, é possível adotar estes modos para projetar e desenvolver sistemas mais eficazes com o uso de transações. Este é o foco principal do conteúdo apresentado neste artigo.

Atualmente, grande parte dos sistemas corporativos utiliza banco de dados relacional para guardar informações referentes a características de negócio que os mesmos se propõem a atender. Com isso, além do desenvolvedor conhecer a tecnologia Java, é importante conhecer o funcionamento básico de um banco de dados e como é feita a comunicação entre eles.

Quando trabalhamos com o banco de dados relacional, além de manipularmos os dados com as operações básicas de consulta, inclusão, alteração e exclusão, também se faz necessário ter o domínio sobre transações e como a tecnologia Java pode trabalhar com ela.

Neste contexto, este artigo irá abordar uma introdução ao assunto transações em banco de dados, destacando seus princípios e suas instruções de controle, seguido das formas que o Java EE possui para controlá-las, utilizando EJB.

O que é uma transação?

Transação é uma sequência ordenada de operações em um banco de dados que são tratadas como um bloco único. Ela trabalha com a união de dois grupos de instruções, sendo um para manipulação de dados (inclusão, alteração e exclusão) e outro para delimitação da transação (begin, commit e rollback).

A delimitação da transação é explicitada pelos termos: begin, que determina o início da transação; commit, que confirma o sucesso da manipulação de dados desde o início da transação; e rollback, que anula toda a manipulação de dados desde o início da transação.

Uma transação deve seguir o principio ACID, que é o acrônimo para Atômica, Consistente, Isolada e Durável. Sendo:

· Atômica: Uma transação que deve executar completamente ou não executar. Isso significa que cada operação dentro de uma unidade de trabalho não deve conter erros. Se uma delas falhar, toda a unidade de trabalho ou transação será abortada, significando que quaisquer alterações nos dados serão desfeitas. Por sua vez, se todas elas executarem com sucesso, a transação será confirmada, o que significa que as alterações nos dados tornam-se permanentes e duráveis;

· Consistente: Refere-se à integridade do armazenamento de dados. Ela é configurada por meio de restrições impostas diretamente no banco de dados, tais como criação de chaves primárias, integridade referencial, entre outros. Assegurando que as transações não quebrarão as regras de negócio definidas no banco de dados;

· Isolada: Significa que uma transação precisa ter permissão de ser executada sem a interferência de outros processos ou transações. Em outras palavras, os dados que uma transação acessa não podem sofrer interferência de qualquer outra parte do sistema até a transação ou unidade de trabalho ser completada;

· Durável: Significa que todas as alterações realizadas nos dados durante o período de uma transação devem ser gravadas em algum tipo de armazenamento físico antes da transação ser completada com sucesso.

Para compreendermos o uso e a importância de uma transação, imagine uma transferência bancária, onde um determinado valor deve ser subtraído da conta de origem e somado na conta de destino.

Na Listagem 1, segue o exemplo de uma especificação para um método que atenda a esta operação. Porém, as instruções não possuem tratamento de erros. Estes erros podem ser vários (por exemplo, indisponibilidade da rede, o que impossibilita a comunicação entre a aplicação e o banco de dados). Caso a instrução de subtração seja efetuada com sucesso e ocorra problema com a de soma, a operação de transferência, mesmo assim, será completada. Isto é, apenas parte da operação foi realizada.

A Listagem 2 demonstra o mesmo exemplo da Listagem 1, porém adicionando o tratamento de erros para as situações: 1) Em caso de problema na instrução de subtração, a instrução de soma não deve ocorrer; 2) Em caso de problema na instrução de soma, a instrução de subtração deve ser desfeita.

...
Quer ler esse conteúdo completo? Tenha acesso completo