소프트웨어 개발/Java - Basic

Exception을 이용한 트랜잭션 익셉션 처리

늘근이 2014. 10. 21. 10:26
//TransactionException클래스를 하나 만든후



public class TransactionManager {

//private static Connection conn; //static은 오직 메모리에 하나만 있기 때문에 여러쓰레드에서 사용할경우 문제발생

//밑에것처럼 만들면, 하나의 흐름에서 하나의 쓰레드를 만들수 있다.

private static ThreadLocal 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()대신 넣어주면 된다.

}

TransactionException은 런타임익셉션으로 만들어야한다. 굴릴때 에러가 나고 롤백이 되어야하기 때문이다.