JDBC:多个请求

时间:2017-04-06 12:30:31

标签: java mysql jdbc

我有一个Java RESTful API,它使用JDBC和ComboPooledDataSource进行连接池(http://www.mchange.com/projects/c3p0/),以及一个通过递增字段来更新行的PreparedStatement:

public void update(int messageId) {

    String UPDATE_STM = "UPDATE table SET count_field = count_field +1 WHERE id=?";
    conn = ConnectionManager.getConnection();
    PreparedStatement stm = conn.prepareStatement(UPDATE_STM );
    stm.setInt(1, messageId);
    stm.executeUpdate();
}

(我省略了try / catch,ConnectionManager.getConnection()给了我一个来自池的可用连接)。 如果我的RESTful服务同时收到两个或更多update()方法的请求,我是否认为计数更新正确? 如果没有,我应该如何修改代码以避免错误的计数更新?

1 个答案:

答案 0 :(得分:1)

使用InnoDB

据我所知,您的Java代码是线程安全的,它不会访问或更改任何字段。您需要担心的是数据库端的 UPDATE 操作。我假设您使用的是MySQL,因为您已使用mysql标记标记了问题。 MySql DBMS提供 ACID 模型,您需要将数据库引擎设置为InnoDB才能生效。有关详细信息,请参阅此link