基于Web的应用程序的JDBC插入语句中的同步

时间:2012-07-23 18:31:25

标签: java servlets jdbc synchronization

我正在开发一个代码,其中有一组insert和select语句。这是一个使用servlet / jsp的基于Web的应用程序。如何确保一次一个请求访问此方法。

我应该使用:

  • 同步方法或同步块
  • 或静态同步方法。
public void insertDetails()
{
    //Select Statement

    If  //result of Select statment == "X"
        insert1
    else
        insert 2
}

2 个答案:

答案 0 :(得分:9)

通常,使用synchronized来控制数据库访问意味着“你做错了”。数据库具有控制并发访问的各种内部机制,因此最好使用它们。除了其他原因之外,在jvm中使用机制可能会限制未来扩展或拥有多个应用程序的能力(即使用相同数据库服务器数据的2个jvms)。

答案 1 :(得分:0)

如果我是你,我会尝试修改我的insert语句来处理if-else条件,而不是使用synchronized块。

正如jthalborn所指出的,这将确保适当利用数据库的内部并发控制机制,并使您的逻辑与必须处理同步方案分离。