Annotation driven 선언적 메서드를 사용하여 MyIbatis와 Spring 트랜잭션을 함께 사용하면 세션 관리가 번거 롭습니다. 나는 보통 이런 식으로 할 트랜잭션없이MyIbatis-Spring 트랜잭션 closeSession
는 :
public int insertPnt(Movimenti value) {
try (SqlSession session = sqlSessionFactory.openSession()) {
for (Movimenti value : values) {
session.insert(
"com.sirio.cisl.dal.MovimentiMapper.insertSelective",
value);
}
} catch (Exception e) {
log.error("Error inserting movimenti "+user+" anno "+anno+" "+ e.getMessage());
throw e;
}
}
하지만 MyIbatis - 봄 문서에서
나는MyBatis로 SQLSESSION 프로그래밍 트랜잭션을 처리 할 구체적인 방법을 제공 읽어 보시기 바랍니다. ........... . 즉, Spring은 항상 트랜잭션을 처리합니다. Spring 관리 SqlSession을 통해 SqlSession.commit(), SqlSession.rollback() 또는 SqlSession.close()를 호출 할 수 없습니다.
그래서 난 그냥 방법에 @Transaction
주석 (그리고 <tx:annotation-driven>
설정)을 추가 할 때 나는 올바른 일을 해요 경우 방황.
@Transactional(rollbackFor=Exception.class)
public int insertPnt(Movimenti value) {
try (SqlSession session = sqlSessionFactory.openSession()) {
..............
}
세션 관리자가 세션 정보를 처리합니까? 또는 try-catch
절을 제거해야합니다. THK