spring-dataを使用してデータベースにアクセスするSpringアプリケーションがあります。現在、データにアクセスするためにHibernate / JPAのみを使用して同じデータベースを更新する必要がある別のアプリケーションもあります。
APP2からデータを更新すると、基になるEntityManagerが更新されないため、spring-dataを介してAPP1にデータが表示されません。
この機能を提供するためのすぐに使えるソリューションはありますか?明らかに、私が考えることができるのは:
APP1をリファクタリングする必要があるため、最初のオプションは避けたいと思います。2番目がどのように機能するかはわかりません。
少し掘り下げてテストした後、Spring-dataとHibernateがこの状況を正しく処理していることが実際にわかりました。
私は純粋なHibernate / JPAに基づいてテストを行いましたが、2つのEntityManagerを使用した場合、一方が他方で行った変更が正しく表示されませんでした(構築中にサービスクラスメンバーとしてEntityManagerを作成しました)。ただし、spring-dataが行うことは、@ Transactionalメソッドを呼び出すたびに新しいHibernateセッションを開き、完了したら閉じるということです。
したがって、問題は特定のビジネスロジックにあります。これは、メソッドの呼び出し中に古いデータを「おそらく」処理することが問題ないかどうかは、@ Transactionalメソッドのコンテキストに依存するためです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加