1

insert ステートメントと select ステートメントのセットがあるコードを開発しています。これは、サーブレット/jsp を使用する Web ベースのアプリケーションです。このメソッドが一度に 1 つのリクエストでアクセスされるようにするにはどうすればよいですか。

私は使用する必要があります:

  • 同期メソッドまたは同期ブロック
  • または静的同期メソッド。
public void insertDetails()
{
    //Select Statement

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

3 に答える 3

9

一般に、同期を使用してデータベースアクセスを制御することは、「間違ったことをしている」ことを意味します。データベースには、同時アクセスを制御するためのあらゆる種類の内部メカニズムがあるため、代わりにそれらを使用することをお勧めします。他の理由の中でも、jvmでメカニズムを使用すると、スケールアウトしたり、複数のアプリを使用したりする将来の機能が制限される可能性があります(つまり、同じデータベースサーバーのデータを利用する2つのjvmがあります)。

于 2012-07-23T19:02:37.200 に答える
0

私があなたならif-else、同期ブロックを使用するのではなく、insert ステートメントを変更して条件を処理しようとします。

jthalborn が指摘したように、これにより、データベースの内部同時実行制御メカニズムが適切に活用され、ロジックが同期シナリオを処理する必要がなくなります。

于 2012-07-23T19:32:51.233 に答える
0

DB エンジンはコミット同期を処理するように設計されているため、コミット同期について心配する必要はありません。

于 2012-08-17T10:18:56.617 に答える