对于特定问题,我希望使用数据库事务。 我过去从未这样做过。我的问题是,如果我可以使用普通的JDBC,或者Java提供更好的东西(框架..)来实现它? 我有什么设计模式可以看吗?
由于
答案 0 :(得分:0)
您可以在互联网上找到答案,但我会为您总结一下。在交易的情况下,您基本上必须遵循以下几个步骤:
在try块中:
在catch区块中:
在finally块中:
以下是一个示例:
try{
connection = getDatabaseConnection();
//set connection auto commit to false
connection.setAutoCommit(false);
PreparedStatement sqlPreparedStatement = connection.prepareStatement("sql statement here");
//set all the values in the prepared statement
sqlPreparedStatement.setString(1,"string");
sqlPreparedStatement.setString(2,"anotherstring");
sqlPreparedStatement.executeUpdate();
PreparedStatement secondSqlStatement = connection.prepareStatement("sql statement here");
//set all the values in the prepared statement
secondSqlStatement.setString(1,"whatever");
secondSqlStatement.setString(2,"sample");
secondSqlStatement.executeUpdate();
//commit the changes
connection.commit();
} catch (SQLException e) {
e.printStackTrace();//or whatever
//rollback the changes
connection.rollback();
} finally {
//close the PreparedStatement and the connection if not null
if (sqlPreparedStatement != null) {
sqlPreparedStatement.close();
}
if (secondSqlStatement != null) {
secondSqlStatement.close();
}
if (connection != null) {
connection.close();
}
}