2
respostas

BMT com PreparedStatement

É possível em um conceito transacional BMT utilizar o PrepareStatement? Ex.: o con.prepareStatement()? Pelo que entendo o preparedStatement é orientado a conexão. Vejo que os diversos exemplos sempre estão implementados com JPA.

2 respostas

BMT e CMT são recursos disponíveis no servidor de aplicação, para nos auxiliar a lidar melhor com nossas transações. Quando estamos usando o PreparedStatement do JDBC, nós temos a opção de setar o auto commit para true ou false e isso nos dará um tratamento parecido (lembrando que nesse contexto não há JPA), onde poderemos escolher o momento onde commitaremos a transação ou daremos o rollback por exemplo. A única diferença é que isso é feito de forma mais "manual". Quando estamos trabalhando com um servidor de aplicação robusto, que escolhemos entre CMT e BMT, mesmo setando BMT, boa parte do controle ainda é feito pelo server. Dessa forma, tem que entender o cenário do seu projeto para ver qual seria a melhor opção.

Então pelo que estou entendendo a utilização do BMT e CMT não é possível com JDBC, somente com JPA. A afirmação esta correta? Além disso, é possível utilizarmos os recursos do BMT sem um servidor de aplicação como o Wildfly, onde posso controlar a transação efetuando o commit e rollback fora do EJB?

por exemplo:

UserTransaction txn = "obter de algum local";

txn.begin();
objDao.cadastrar(obj);
outroObjDao.cadastrar(outroObj);
txn.commit();