先複習一下事務的特點:ACID
Atomicity: 原子性
Consistency: 一致性
Isolation: 隔離性
Durability: 耐久性
iBatis中的事務分為:
Automatic Transaction
Local Transaction
Global Transaction
Custom Transaction
Automatic Transaction:
預設情況下iBatis認為每個statement都是一個事務
比如
public void runStatementsUsingAutomaticTransactions()
{
SqlMapClient sqlMapClient =
SqlMapClientConfig.getSqlMapClient();
Person p = (Person)
sqlMapClient.queryForObject("getPerson", // 第一個事務
new Integer(9));
p.setLastName("Smith");
sqlMapClient.update("updatePerson", p); //第二個事務
}
Local Transaction:
如果你想將幾個statement作為一個事務來處理,可以用
startTransaction,endTransaction來劃分事務
比如
public void runStatementsUsingLocalTransactions() {
SqlMapClient sqlMapClient =
SqlMapClientConfig.getSqlMapClient();
try {
sqlMapClient.startTransaction(); //事務開始
Person p =
(Person)sqlMapClient.queryForObject
("getPerson", new Integer(9));
p.setLastName("Smith");
sqlMapClient.update("updatePerson", p);
Department d =
(Department)sqlMapClient.queryForObject
("getDept", new Integer(3));
p.setDepartment(d);
sqlMapClient.update("updatePersonDept", p);
sqlMapClient.commitTransaction(); //提交事務,從開始到這裡是一個事務
} finally {
sqlMapClient.endTransaction(); //事務結束
}
}
至於後面的兩種事務很少用到,如果你用到了,那也不用看這篇文章了