-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
autoCommit(false)시 conn.rollback()은 필요 없나요?
22.11.26 21:15 작성 조회수 659
1
안녕하세요. 강의 늘 잘 보고 있습니다. 1편을 다 마치게 되어서 손으로 jdbc~트랜잭션 추상화까지 직접 테스트 코드를 짜보고 있는데요.
일부러 같은 pk를 넣어 익셉션이 터지도록 의도하고, 롤백이 되길 원했습니다.
그런데 코드를 들여다보니 rollback() 구문을 빠트리고 작성했는데도 원하는 대로 롤백이 되었습니다.
void multiSave(List<Member> members) throws SQLException {
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
try {
conn.setAutoCommit(false);
for (Member member : members) {
repository.save(conn, member);
}
conn.commit();
} catch (SQLException e) {
log.error("log message = {}", e);
throw new RuntimeException();
} finally {
JdbcUtils.closeConnection(conn);
}
}
사실 autocommit true가 아니니까 이렇게 처리해주는 것이 당연한 것 같으면서도, 개발자가 명시하지 않아도 동작하는 거라면 rollback()이 왜 있는 건가요? 다른 쓰임새가 또 있는걸까요?
답변을 작성해보세요.
답변 1