S2DAOのトランザクション
トランザクションの自動制御
Seasarでは、トランザクションを制御する(S2JTA)が実装されている。
初期設定では、AutoCommitがtureになっているため、
SQLを実行するとcommitが実行される。
そこで、トランザクションを独自で制御した場合には、
UserTransactionを使用する。
public static void main(String[] args) { SingletonS2ContainerFactory.init(); S2Container container = SingletonS2ContainerFactory.getContainer(); DeptDao dao = (DeptDao)container.getComponent(DeptDao.class); //トランザクション取得 UserTransaction ut = (UserTransaction)container.getComponent(UserTransaction.class); try { //トランザクション開始 ut.begin(); //更新前の情報を取得 Dept d = dao.selectDeptWhere(10); d.setDept_name("MUSIC00"); d.setLoc(null); //UPDATE dao.updateDeptUnlessNull(d); //コミット ut.commit(); } catch(Exception e){ //ロールバック try { ut.rollback(); } catch (Exception e1){ e1.printStackTrace(); } e.printStackTrace(); } }