Java 8로 트랜잭션을 작성하고 있습니다. 먼저, 제 코드는 이와 같습니다. 내가 트랜잭션 실패시 롤백해야하기 때문에Java 8에서 명령문 실행 실패를 롤백하는 가장 좋은 방법은 무엇입니까?
try (Connection conn = DAOUtil.getConnection();
PreparedStatement ps = conn.prepareStatement(addSubscriptionSql)) {
conn.setAutoCommit(false);
//do work
conn.commit();
} catch (SQLException e) {
e.printStackTrace(); //handle error
}
는하지만,이 같은 코드를 변경했다. 2 개의 try
블록을 주목하십시오.
try (Connection conn = DAOUtil.getConnection()) {
try (PreparedStatement ps = conn.prepareStatement(addSubscriptionSql)) {
conn.setAutoCommit(false);
//do work
conn.commit();
} catch (SQLException e) {
conn.rollback();
e.printStackTrace(); //handle error
}
} catch (SQLException e) {
e.printStackTrace(); //handle error
}
제 질문은이 방법을 사용하는 것이 더 나은가요? 단일 try 블록으로이 작업을 수행 할 수 있습니까?
영리한! 공유해 주셔서 감사합니다. –
그것은 똑똑한 해결책입니다. +1을 위해서 그렇지만, 코드베이스에서 얼마나 많은 사람들이 이것을 이해할 수 있는지 이해할 수 있을지 궁금합니다. –