// 1번 트랜잭션 (Spring bean) someDao.transactionTest01();
// 2번 트랜잭션 (Not spring bean) new OtherDao().transactionTest02( someDao.getConnection() );
// 3번 트랜잭션 (Spring bean) someDao.transactionTest03();
SomeDao.java 에서 ....
public Connection getConnection() throws SQLException { // DataSourceUtils는 발생하는 SQLException에 대해 CannotGetJdbcConnectionException으로 받아 상위처리를 담당한다. // 글로벌 트랜잰션을 통해 제어하지 않아야 할 경우 이런식으로 Connection을 얻어 처리하면 된다. return DataSourceUtils.getConnection( getSqlMapClientTemplate().getDataSource() ); }
public void transactionTest01() throws Exception {
Map parameterMap = new HashMap(2); parameterMap.put("sampleCd", "1001"); parameterMap.put("sampleNm", "테스트_01");
int affected = getSqlMapClientTemplate().update("sample.otherUpdate", parameterMap); }
public void transactionTest03() throws Exception {
Map parameterMap = new HashMap(2); parameterMap.put("sampleCd", "1001"); parameterMap.put("sampleNm", "테스트_03");
int affected = getSqlMapClientTemplate().update("sample.otherUpdate", parameterMap);
if (affected == 1) { throw new Exception("TEST ERROR"); // 1번, 2번 모두 rollback 됨 } }
OtherDao.java 에서 .....
public class OtherDao {
final String SQL = "UPDATE TB_SAMPLE " + " SET SAMPLE_NM = ? " + " WHERE SAMPLE_CD = ? ";
public void transactionTest02(Connection conn) throws Exception {
Map parameterMap = new HashMap(2); parameterMap.put("sampleCd", "1001"); parameterMap.put("sampleNm", "테스트_02");