Erstens ist eine Transaktion ein "Ablauf einer Reihe von Prozessen, um einen bestimmten Prozess auszuführen". Wenn einer der Prozesse in einer Reihe von Prozessen abgeschlossen wird, werden die bis zu diesem Zeitpunkt aktualisierten Prozesse häufig zurückgespult und in den Status vor den Prozessen zurückversetzt. Abhängig von der Situation möchten Sie jedoch möglicherweise zu einem bestimmten Punkt zurückkehren, an dem Sie nicht alles zurückgeben möchten. In einem solchen Fall können Sie einen Speicherpunkt festlegen und zu diesem Punkt zurückkehren (Rollback).
Beschreiben Sie den Beispielcode unter der Annahme, dass der Argumentname in der Listentabelle registriert wird.
Java
public void regist(String name) throws SQLException{
Connection con = null;
Savepoint save = null;
String sql = null;
PreparedStatement ps = null;
try{
con = this.getConnection();
if(con.getMetaData().supportsSavepoints()){
save = con.setSavepoint();
}
sql = "insert into list (name) values (?)";
ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.executeUpdate();
ps.close()
}catch(SQLException e){
if(save != null){
con.rollback(save);
}
else{
con.rollback();
}
}finally{
if(con!=null){
try{
con.close();
}catch(SQLException e){
}
}
}
}
Recommended Posts