2013년 8월 11일 일요일

[Spring Transaction, tmvmfldrptlvks, Struts, Spring, Spring3.2, iBATIS, Spring MVC, Spring JDBC, Spring Framework,Spring교육, Spring강좌, Spring IoC, Spring DI, Spring DL, 구로디지털 Spring교육, spring MyBatis, Hibernate]간단한 Spring Transaction 예제

기본 spring jar외 commons-pool, commons-dbcp jar가 필요 합니다.
당연히 oracle jdbc driver는 필요하구요.

오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  

 
package transaction;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
public class TransactionTest {
 DataSource dataSource;
 PlatformTransactionManager transactionManager;

 public static void main(String[] args) {
  BasicDataSource ds = new BasicDataSource();
  ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
  ds.setUrl("jdbc:oracle:thin:@localhost:1521:wink");
  ds.setUsername("scott");
  ds.setPassword("tiger");
 
  DataSourceTransactionManager tm = new DataSourceTransactionManager();
  tm.setDataSource(ds);
 
  TransactionTest update = new TransactionTest();
  update.setDataSource(ds);
  update.setTransactionManager(tm);
 
  //execute
  update.doUpdate();
 
  System.out.println("<<<<<<<<<<<<< TR OK >>>>>>>>>>>>");
 }

 public void setDataSource(DataSource dataSource) {
  this.dataSource = dataSource;
 }

 public void setTransactionManager(PlatformTransactionManager transactionManager){
  this.transactionManager = transactionManager;
 }

 public void doUpdate() {
  DefaultTransactionDefinition td = new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED);
  td.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
  td.setTimeout(10);
  TransactionStatus status = transactionManager.getTransaction(td);
 
  try {
   updateSal();
  } catch( DataAccessException e) {
   transactionManager.rollback(status);
   throw e;
  }
  transactionManager.commit(status);
 }

 private void updateSal() throws DataAccessException{
  String strQuery = "update emp set sal = 0 where sal = 2000000 ";
  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
   jdbcTemplate.update(strQuery);
 }

}

댓글 없음:

댓글 쓰기