您的位置:首页 > 编程语言 > Java开发

Spring:完全通过程序控制Spring事务

2016-04-21 10:02 429 查看
@Repository
public class SchemaRepository {

public SchemaRepository() {
}

public void createData1(DataSource dataSource) throws SQLException {
JdbcOperations jdbcOp = new JdbcTemplate(dataSource);
String sql = "INSERT INTO `t1` (`t1_id`, `name`) VALUES (1, 't1name1')";
PreparedStatementCreatorFactory statementCreatorFactory = new PreparedStatementCreatorFactory(sql);
statementCreatorFactory.setReturnGeneratedKeys(true);
PreparedStatementCreator creator = statementCreatorFactory.newPreparedStatementCreator(new Object[] {});
GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
jdbcOp.update(creator, keyHolder);
}

public void createData2(DataSource dataSource) throws SQLException {
JdbcOperations jdbcOp = new JdbcTemplate(dataSource);
String sql = "INSERT INTO `t1` (`t1_id`, `name`) VALUES (1, 't1name2')";
PreparedStatementCreatorFactory statementCreatorFactory = new PreparedStatementCreatorFactory(sql);
statementCreatorFactory.setReturnGeneratedKeys(true);
PreparedStatementCreator creator = statementCreatorFactory.newPreparedStatementCreator(new Object[] {});
GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
jdbcOp.update(creator, keyHolder);
}
}

@Service
public class SchemaService {

private SchemaRepository schemaRepository;

@Autowired
public SchemaService(SchemaRepository schemaRepository) {
this.schemaRepository = schemaRepository;
}

public void createData() throws SQLException {
DataSource dataSource = new DriverManagerDataSource("jdbc:mysql://localhost:3306/abc", "root", "root");
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(dataSource);
TransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try {
schemaRepository.createData1(dataSource);
schemaRepository.createData2(dataSource);

transactionManager.commit(status);
} catch (Exception e) {
e.printStackTrace();
transactionManager.rollback(status);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: