Atomicity: 原子性
Consistency: 一致性
Isolation: 隔離性
Durability: 耐久性
iBatis中的事務(wù)分為:
Automatic Transaction
Local Transaction
Global Transaction
Custom Transaction
Automatic Transaction:
默認(rèn)情況下iBatis認(rèn)為每個(gè)statement都是一個(gè)事務(wù)
比如
public void runStatementsUsingAutomaticTransactions()
{
SqlMapClient sqlMapClient =
SqlMapClientConfig.getSqlMapClient();
Person p = (Person)
sqlMapClient.queryForObject("getPerson", // 第一個(gè)事務(wù)
new Integer(9));
p.setLastName("Smith");
sqlMapClient.update("updatePerson", p); //第二個(gè)事務(wù)
}
Local Transaction:
如果你想將幾個(gè)statement作為一個(gè)事務(wù)來處理,可以用
startTransaction,endTransaction來劃分事務(wù)
比如
public void runStatementsUsingLocalTransactions() {
SqlMapClient sqlMapClient =
SqlMapClientConfig.getSqlMapClient();
try {
sqlMapClient.startTransaction(); //事務(wù)開始
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(); //提交事務(wù),從開始到這里是一個(gè)事務(wù)
} finally {
sqlMapClient.endTransaction(); //事務(wù)結(jié)束
}
}