소프트웨어 개발/Java - Basic
Exception을 이용한 트랜잭션 익셉션 처리
늘근이
2014. 10. 21. 10:26
//TransactionException클래스를 하나 만든후 public class TransactionManager { //private static Connection conn; //static은 오직 메모리에 하나만 있기 때문에 여러쓰레드에서 사용할경우 문제발생 //밑에것처럼 만들면, 하나의 흐름에서 하나의 쓰레드를 만들수 있다. private static ThreadLocalTransactionException은 런타임익셉션으로 만들어야한다. 굴릴때 에러가 나고 롤백이 되어야하기 때문이다.tlocal = new ThreadLocal (); public static void begin() throws TransactionException{ try{ Connection conn = DBUtil.getConnection(); conn.setAutoCommit(false); tlocal.set(conn); //이렇게 하면 하나의 흐름안에 하나만 쓰게 됨. }catch(Exception e){ throw new TransactionException(e); } } public static void commit() throws TransactionException{ try{ Connection conn = tlocal.get(); conn.commit(); conn.close(); tlocal.set(null); }catch(Exception e){ throw new TransactionException(e); } } public static Connection get() throws TransactionException{ Connection conn = tlocal.get(); return conn; } public static void rollback() throws TransactionException{ //마찬가지로 롤백도 commit()대신 넣어주면 된다. }