1.三层架构中使用Jodd事先事务处理。
UserDao:
public class UserDao {
private DbSession session;
public UserDao(DbSession session) {
super();
this.session = session;
}
public void UpdateUser(User user){
String sql = "update ...";
DbQuery query = new DbQuery(session,sql);
//.......
query.executeUpdate();
}
}
LogDao:
public class LogDao {
private DbSession session;
public LogDao(DbSession session) {
super();
this.session = session;
}
public void UpdateLog(Log log){
String sql = "update ...";
DbQuery query = new DbQuery(session,sql);
//.......
query.executeUpdate();
}
}
UserService:
ConnectionProvider cp = new DriverManagerConnectionProvider(
"com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/KMS",
"root", "");
cp.init(); //初始化,实际上就是加载驱动的过程。
DbSession session = new DbSession(cp);
session.beginTransaction(new DbTransactionMode().setReadOnly(false)); //设置事务的方式,需要作更新的操作。
UserDao userDao = new UserDao(session);
LogDao logDao = new LogDao(session);
try{
userDao.update();
logDao.Update();
session.commitTransaction();
session.closeSession();
}catch(jodd.db.DbSqlException e){
session.rollbackTransaction();
}finally{
session.closeSession(); //注意关掉session,其他的Connection等会自动被关闭。
}
以上只是将核心代码列出来,主要的地方作出标记。