Особенности автоматической фиксации jdbc внутри транзакции JPA
У меня есть метод буксировки следующим образом:
@org.springframework.transaction.annotation.Transactional
public boolean creditAccount(String accountId)
{
LogUtility.logTxn(accountId);
// Do somethings
}
public class LogUtility
{
javax.sql.DataSource dataSource; // this property initialized in static block of intilalizing LogUtility class
public logTxn(String account)
{
java.sql.Connection conn = dataSource.getConnection();
conn.setAutoCommit(true);
CallableStatement cs = conn.prepareCall(/*name of a oracle package and its procedures*/);
cStmt.execute();
}
}
Я хочу понять, когда произойдет исключение в creditAccount
метод после LogUtility.logTxn
метод называется (здесь: // Do somethings
) затем LogUtility.logTxn
метод фиксации или отката? я знаю creditAccount
метод в этой ситуации откатился, но я не знаю поведение logTxn
метод.
1 ответ
Решение
Вы создаете другое соединение из источника данных, это означает, что у вас есть другой сеанс с базой данных, поэтому это соединение имеет свою транзакцию и фиксацию / откат отдельно