Tenho as seguintes perguntas:
- Qual é a diferença entre esses dois?
- Ambos são suportados por todos os bancos de dados?
- JPA TransactionManager e JTA TransactionManager são diferentes?
As implementações JPA têm a opção de gerenciar as próprias transações ( RESOURCE_LOCAL
) ou gerenciá-las pela implementação JTA do servidor de aplicativos.
Na maioria dos casos, RESOURCE_LOCAL é adequado. Isso usaria transações básicas de nível JDBC. A desvantagem é que a transação é local para a unidade de persistência JPA, portanto, se você deseja uma transação que abrange várias unidades de persistência (ou outros bancos de dados), RESOURCE_LOCAL pode não ser bom o suficiente.
JTA também é usado para gerenciar transações em sistemas como JMS e JCA, mas é um uso bastante exótico para a maioria de nós.
Para usar JTA, você precisa de suporte para ele em seu servidor de aplicativos e também de suporte do driver JDBC.
Além de outras respostas
Aqui está um trecho do artigo extremamente útil (publicado no site do Apache TomEE ), que também pode ajudar a responder à primeira pergunta do OP (o link para o artigo está abaixo).
Qualquer pessoa interessada em aprender a Java Persistence API - faça um favor a si mesmo e leia o artigo completo aqui: Conceitos de JPA: JPA 101 .
fonte
transaction-type=RESOURCE_LOCAL
e@PersistenceContext
e@Transactional
gerido pela PrimaveraResource_Local e JTA são gerenciadores de transações (métodos de fazer transações). Esta não é propriedade do banco de dados, mas o componente responsável por coordenar as transações. Os gerenciadores de transações JPA e JTA são diferentes. O gerenciador de transações JPA é responsável pelas transações JPA e você deseja usar um se estiver apenas fazendo transações JPA. O gerenciador de transações JTA é um gerenciador de transações de propósito geral e pode alistar outros recursos, como filas JMS na transação. Normalmente, os contêineres Java EE empregam um gerenciador de transações JTA para EJBs, entidades JPA, etc.
fonte
resource_local vs JTA é sobre transação local vs transação global. É sobre como podemos gerenciar vários recursos em uma única transação.
CMT vs BMT trata de quem está abrindo e fechando a transação - desenvolvedor de aplicativos ou servidor de aplicativos.
fonte