У меня возникла проблема с транзакциями, настроенными в моем коде. Ниже приведен код с транзакциями, которые записывают данные в БД.
Writer.java
class Writer {
@Inject
private SomeDAO someDAO;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void write(){
this.batchWrite();
}
private void batchWrite () {
try {
someDAO.writeToTable1(true);
} catch(Exception ex) {
someDAO.writeToTable1(false);
}
someDAO.writeToTable2();
}
}
SomeDAO.java
class SomeDAO {
@Inject
private JdbcTemplate JdbcTemplate;
public void writeToTable1(boolean flag) {
// Writes data to table 1 using jdbcTemplate
jdbcTemplate.update();
}
pulic void writeToTable2() {
// Writes data to table 2 using jdbcTemplate
jdbcTemplate.update();
}
}
Здесь данные должным образом сохраняются в таблице 1, но иногда таблица пропускается.
Я не уверен, как это происходит, поскольку обе таблицы были записаны в одной транзакции.
Либо транзакция частично фиксирует данные, либо частично откатывается.
Я сомневаюсь, что в классе SomeDAO
я внедряю объект JdbcTemplate
, который создает новое соединение вместо использования существующего соединения транзакции.
Может кто-нибудь помочь мне здесь?