0

OpenJPAを使用しているときに、クラスにアノテーション@Entityをマークすると、このエンティティを基になるデータベースと常に同期するように(アノテーションを介して)指定する方法があります。

目的は、常に最新の変更されたデータにアクセスすることです。エンティティクラスの外部でEntityManager.refresh、オブジェクトを更新してデータベースから最新のデータをロードできることを理解しています。しかし、エンティティ自体を作成するときにそれを指定する方法はありますか。将来の開発者がエンティティクラスを見るだけで、常に最新のデータがあることを知ることができるようになります。彼は、EntityManager.refreshが呼び出された場所を確認するために、コードベース全体をスキャンする必要はありません。

4

1 に答える 1

0

あなたが扱っている問題は、同じエンティティの同時変更だと思います。JPAはそれに対処するようには設計されていません。JPAアプリケーションで同時アクセスを処理するためのより適切な形式は、ロックです。

また、トランザクションの分離についても言及していません。あなたが話す振る舞いは、トランザクションの開始後に変更されたデータのアクセス可能性に大きく依存します。これは、すべてのトランザクション分離レベルで可能というわけではありません。

要件をシステム時計のようなものともっと比較する必要があります。メソッドを呼び出すときは、常に最新の日付にアクセスする必要がありますnow。したがって、そのオブジェクトを返すことができるサービスが必要です。また、そのサービスを介してそのオブジェクトの更新を書き込む必要があります。そのため、サービスは現在最新のオブジェクトを完全に制御できます。

于 2013-02-06T08:01:55.723 に答える