Hibernate を介して db (MySQL 5.1) の 1 つのテーブルからデータを取得し、コンテンツを表示する単純なアプリケーションがあります。使用される主なフレームワークは Spring 3.0 です。クエリは @Transactional(read-only) (+second cache level) で正しく実行されます。同じページに対して 20/30 リクエストを使用していくつかの同時テストを実行すると、問題が発生します。一部のページ要求は、200 ではなく 500 を返します。これは、@Transactional がマルチスレッド アクセスを管理していないためだと思います (間違っている場合は修正してください)。
コントローラーには、次のようなものがあります。
List<String> names = usersService.getUserNames(); // this executes query in @Transactional env
doSomething(names);
ログには、渡されたリストにデータがないため、「doSomething」が NullPointerException をスローしたことが示されています。
db への同時要求を管理する Spring+Hibernate を使用してマルチスレッド アクセス マネージャーを実装する方法はありますか?