JdbcTemplate-OracleDataSource를 통해 Oracle 11g에 값을 삽입하는 것은 Spring 구성 파일을 통해 실행됩니다. 트랜잭션은 DataSourceTransactionManager에서 관리하는 @Transactional을 통해 수행됩니다.Oracle 데이터 소스 연결에서 autocommit 값을 false로 설정하는 방법은 무엇입니까?
질문 1) autocommit 값을 false로 설정하는 방법은 무엇입니까? 기본값은 true입니다.
DataSource ds = (DataSource)ctx.getBean("dataSourceBean");
try {
ds.getConnection().setAutoCommit(false);
System.out.println("Autocommit " +ds.getConnection().getAutoCommit());
} catch (SQLException e) {
e.printStackTrace();
}
가 println
문은 true
을주고있다 : 다음 는 코드입니다.
또한 getAutoCommit 값을 DAO 클래스의 insert 메소드에 인쇄합니다. 또한 사실이 다가옵니다.
질문 2) 고유 한 제약 조건 위반의 경우 롤백해야합니다. 이 경우 DuplicateKeyException
이 발생하여 SQLIntegrityConstraintViolationException을 래핑합니다. 그래서 @Transactional (rollbackFor =? .class)에는 어떤 예외가 있어야합니까? 변수
DataSource ds = (DataSource)ctx.getBean("dataSourceBean");
try {
Connection con =ds.getConnection();
con.setAutoCommit(false);
System.out.println("Autocommit " +con.getAutoCommit());
} catch (SQLException e) {
e.printStackTrace();
}
에서
한 번에 질문을 하나만하십시오. –
연결 (또는 프록시)은 사용자가 아닌 컨테이너에 의해 자동으로 커밋이 처리되므로 true를 반환 할 수 있습니다. –