Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Transação JTA

A configuração transaction-type no persistence.xml ex:

é facultativa? Ou seja se não fizer essa configuração o servidor irá controlar as transações mesmo assim? A anotação @TransactionManagement tem essa finalidade individualmente em cada Dao correto?

1 resposta
solução!

Não é facultativa. É nessa propriedade que você indica se está controlando a transação na mão (RESOURCE_LOCAL) ou se está delegando para um container (JTA).

Porém, muitas vezes quando usamos uma transação JTA queremos por alguma motivo especial (nunca tive esse motivo) controlar a transação manualmente, ainda uma transação JTA, mas queremos ter controle programático. Usamos a anotação @TransactionManagement e indicamos o tipo.

O padrão quando usamos tudo controlado pelo container é

@TransactionManagement(value=TransactionManagementType.CONTAINER)

Porém, quando alteramos para BEAN:

@TransactionManagement(value=TransactionManagementType.BEAN)
`

Podemos mexer, fazer o que quiser com a transação através de:

   @Resource
   private UserTransaction userTransaction;

É mais burocrático, mas vai lá saber quando isso é necessário. E o chato é que você tem que ficar abrindo e fechando a transação na mão. Na forma padrão, o EJB já cuida disso para você.