【发布时间】:2015-08-13 05:32:54
【问题描述】:
我是 Spring 事务管理的新手,我想知道我删除了 TransactionStatus status = transactionManager.getTransaction(def);和 transactionManager.commit(status);记录还会保存到数据库中吗?
TransactionStatus status = transactionManager.getTransaction(def);
try {
String SQL1 = "insert into Student (name, age) values (?, ?)";
jdbcTemplateObject.update( SQL1, name, age);
// Get the latest student id to be used in Marks table
String SQL2 = "select max(id) from Student";
int sid = jdbcTemplateObject.queryForInt( SQL2 );
String SQL3 = "insert into Marks(sid, marks, year) " +
"values (?, ?, ?)";
jdbcTemplateObject.update( SQL3, sid, marks, year);
System.out.println("Created Name = " + name + ", Age = " + age);
transactionManager.commit(status);
【问题讨论】:
-
试试吧,你会看到的。为什么不使用 TransactionTemplate,如记录的那样? docs.spring.io/spring/docs/current/spring-framework-reference/…
-
我尝试删除它,它仍然有效(数据保存到数据库中),只是想确认删除此提交是否安全(在这种情况下我不需要回滚或事务)
-
不安全...要么一切正常,要么一切都失败了。如果您删除托管的 tx,则第一个插入可能会正常,而第二个插入可能会失败,而您无法回滚第一个。
标签: spring spring-jdbc