I seem to be getting automatic transactions when I use Spring DAOs
generated by Abator even though my SqlMapConfig.xml contains the
following.
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
...
Here's the simple bit of code I'm using to test this. The change to
addressId is persisted even though a RunTime exception is thrown
inside the try and commitTransaction is not called. Any idea what I
might be doing wrong?
boolean problem = true;
Person person = personDAO.selectByPrimaryKey(markId);
SqlMapClient smc = ((SqlMapClientDaoSupport)
personDAO).getSqlMapClient();
try {
smc.startTransaction();
person.setAddressId(addressId);
personDAO.updateByPrimaryKey(person);
System.out.println("updated address"); // This is output.
// What happens if an exception occurs here?
if (problem) throw new RuntimeException("something bad
happened");
person.setHomePhoneId(homePhoneId);
personDAO.updateByPrimaryKey(person);
System.out.println("updated home phone"); // This isn't output.
smc.commitTransaction();
} finally {
smc.endTransaction();
}