java – 如何在服务层中进行事务
作者:互联网
我的项目中有一个DAO层.这是我的UsersDao接口,它的实现UsersDaoImpl
public interface UsersDao {
public Users insert(Users object);
}
public class UsersDaoImpl implements UsersDao {
@Override
public Users insert(Users object) {
String sqlQuery = null;
PreparedStatement stmt = null;
try (Connection connection = DbConnector.getConnection()) {
sqlQuery = "INSERT INTO `users`(login, password,passwordSalt, name, surname)" + " values (?, ?,?,?,?);";
stmt = connection.prepareStatement(sqlQuery);
stmt.setString(1, "fsf");
stmt.setString(2, "f");
stmt.setString(3, "af");
stmt.setString(4, "fddsg");
stmt.setString(5, "sdgsgd");
stmt.executeUpdate();
stmt.close();
return object;
} catch (SQLException e) {
System.err.println(e.getMessage());
return null;
}
}
这是我的服务层类和接口.
public interface UsersService{
public Users insert(Users object);
}
public class UsersServiceImpl implements UsersService{
UsersDaoImpl users = new UsersDaoImpl();
public Users insert(Users object){
return users.insert(object);
}
我需要写入我的服务方法,我可以在异常捕获时进行回滚吗?如何在我的服务方法中记录写入事务?你能告诉我一些例子吗?感谢名单!
解决方法:
首先,如果发生异常,则不会插入数据集,因此会回滚它.
如果您具有链接的单独原子操作,则使用事务.这意味着如果您需要回滚一个错误.
如果您现在想要手动实现它,则必须查看您对X点所做的操作,然后撤消所有发生的事情.但它非常容易出错并且非常不灵活.因此,我建议为此目的使用底层DB系统,这将集成此功能.或者使用持久层.
如果您使用JDBC compiant驱动程序,请查看此处https://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html
标签:java,servlets,transactions,dao,service-layer 来源: https://codeday.me/bug/20190711/1430193.html