我正在开发一个代码,其中有一组插入和选择语句。这是一个使用 servlet/jsp 的基于 Web 的应用程序。我如何确保一次一个请求访问此方法。
我应该使用:
- 同步方法或同步块
- 或静态同步方法。
public void insertDetails()
{
//Select Statement
If //result of Select statment == "X"
insert1
else
insert 2
}
我正在开发一个代码,其中有一组插入和选择语句。这是一个使用 servlet/jsp 的基于 Web 的应用程序。我如何确保一次一个请求访问此方法。
我应该使用:
public void insertDetails()
{
//Select Statement
If //result of Select statment == "X"
insert1
else
insert 2
}
通常,使用同步来控制数据库访问意味着“你做错了”。数据库有各种内部机制来控制并发访问,所以最好改用它们。除其他原因外,在您的 jvm 中使用机制可能会限制未来扩展或拥有多个应用程序的能力(即有 2 个 jvm 使用同一数据库服务器的数据)。
如果我是你,我会尝试修改我的插入语句以处理if-else
条件,而不是使用同步块。
正如 jthalborn 所指出的,这将确保正确利用数据库的内部并发控制机制,并将您的逻辑与必须处理同步场景分离。
您无需担心提交同步,因为 DB 引擎旨在处理该问题。