Spring、Hibernate、MySQL-事务如何工作-结论/问题**
我使用SpringFramework 3.0.5、Hibernate3.6和MySQL服务器5.1。我有一些关于交易管理的问题。我个人使用spring的声明性事务管理。如果你能用是/否(或正确/不正确)回答我的问题,并在必要时给出简短的解释,那就太好了。如果有不同的意见,有几个人来回答就好了。谢谢:-) 1)您认为这句话是正确的吗:DBMS负责事务及其行为的总体实现 1)B)也许最好这样说:DBMS负责事务的一般实现和数据库的行为(例如,当事务回滚时) 2)Hibernate只使用数据库连接。它需要事务,但不配置任何有关事务及其行为的(!)设置 3)但是:要处理事务,Hibernate需要知道事务从何处开始、提交到何处以及需要回滚 4)Hibernate是否还需要知道发生回滚时的情况?我认为没有,因为这应该在DBMS中定义。(这意味着:哪些表应该被锁定,哪些数据库操作应该被撤消,等等,对吗?) 5)对于3),可以使用编程或声明式事务管理 6)使用programmativ事务管理时,Hibernate需要知道的一切(3)都可以由开发人员手动写入源代码中 7)对于声明性事务管理,需要一个附加的hibernate框架,例如Spring 8)Spring管理事务。这就像是他们的一个框架。它触发操作,如启动和回滚事务 9)Spring还可以定义哪些异常必须回滚,哪些异常不能回滚 10)发生回滚时,Spring是否还有其他功能?我认为数据库负责回滚,spring只是触发它,对吗?这只是为了确保 谢谢:-)Spring、Hibernate、MySQL-事务如何工作-结论/问题**,mysql,hibernate,spring,transactions,Mysql,Hibernate,Spring,Transactions,我使用SpringFramework 3.0.5、Hibernate3.6和MySQL服务器5.1。我有一些关于交易管理的问题。我个人使用spring的声明性事务管理。如果你能用是/否(或正确/不正确)回答我的问题,并在必要时给出简短的解释,那就太好了。如果有不同的意见,有几个人来回答就好了。谢谢:-) 1)您认为这句话是正确的吗:DBMS负责事务及其行为的总体实现 1)B)也许最好这样说:DBMS负责事务的一般实现和数据库的行为(例如,当事务回滚时) 2)Hibernate只使用数据库连接。它
[编辑] 这是对达菲莫的回答,太长了,我不能在8小时内回答我自己的问题,这就是为什么现在我必须把它放在这里。对不起 @达菲莫 有趣的答案,以下是我的想法:
// prototypical write operation
public void update(Connection connection) throws SQLException
{
connection.setAutoCommit(false);
try
{
// SQL logic here
connection.commit(); // if you get here, success
}
catch (SQLException e)
{
try { if (connection != null) connection.rollback(); } catch (SQLException e) {}
// might do some other things here (logging, etc.)
// sql error codes will tell you why; spring translates these for you.
}
finally
{
// close statements here in individual try/catch blocks.
}
}