Transações JTA ou LOCAL no JPA2 + Hibernate 3.6.0?

Estamos repensando nossa pilha de tecnologias e, abaixo, nossas escolhas (não podemos viver sem o Spring e o Hibernate devido à complexidade etc. do aplicativo). Também estamos passando do J2EE 1.4 para o Java EE 5.

Pilha de tecnologia

Java EE 5JPA 2.0 (eu sei que o Java EE 5 suporta apenas o JPA 1.0, mas queremos usar o Hibernate como provedor de JPA)Hibernate 3.6.0 (já temos muitos arquivos hbm com tipos personalizados etc., não queremos migrá-los no momento para o JPA. Isso significa que queremos que os dois mapeamentos jpa / hbm funcionem juntos e, portanto, o Hibernate como JPA provedor em vez de usar o padrão que acompanha o App Server)

Agora, o problema é que eu quero continuar com as transações locais, mas outros membros da equipe querem usar o JTA. Trabalho com o J2EE há 9 anos e ouvi várias vezes pessoas sugerindo manter transações locais se eu não precisar de confirmações em duas fases. Isso não é apenas por motivos de desempenho, mas a depuração / solução de problemas de uma transação local é muito mais fácil do que uma JTA (mesmo que a JTA apenas confirme a fase única quando necessário).

Minha sugestão é usar o gerenciamento de transações declarativas da primavera + transações locais (HibernateTransactionManager) em vez do contêiner JTA

Quero ter certeza de que estou sendo paranóico ou tenho um ponto válido. Gostaria de ouvir o que o resto do mundo Java EE pensa. Ou, por favor, aponte-me um artigo apropriado.

questionAnswers(2)

yourAnswerToTheQuestion