1

システムをフロントエンドとバックエンドに分割する予定です。現在、私のアプリケーションはデータベースと直接通信していますが、代わりにそれを行うための Spring Web サービスを作成したいと考えています。私の問題は、Hibernate を使用してオブジェクトをデータベース テーブルにマップすることにあります。

データベースとの永続的な最新のやり取りを行うには、フロント エンド プログラムが必要です。これは、すべてのクエリと更新を処理するために、多くの Web サービス エンドポイントを作成する必要があることを意味します。私は何も得ていないので、これもまた Hibernate マッピングを無意味にします。

私の質問は: (可能であれば SOAP を介して) 休止状態にマップされたオブジェクトをフロントエンドに渡し、後でこれらのオブジェクトに加えられた変更をコミットする、実証済みで合理的な方法はありますか?

4

2 に答える 2

2

要するに:いいえ。

あなたが考えているように、さまざまなアプリケーションで hibernate 管理オブジェクトをデタッチして再アタッチすると、すべての LazyLoadingExceptions を処理した後、同時実行やロックの問題など、回避したいあらゆる種類の問題が発生します。それはb ***の苦痛になるでしょう。

あなたが向かっている道は最終的に、ビジネス サービスとそれらのビジネス サービスのクライアントとの間でデータ オブジェクトが転送される間接的なレイヤーを追加するアーキテクチャにつながります。データベースと直接対話できるのは、ビジネス サービスだけです。明らかにこれは時間がかかるため、可能であれば回避する必要があります。そのため、あなたが解決しようとしている問題について説明してほしいとお願いしました。

于 2012-06-17T15:12:11.170 に答える
1

SOAP またはその他のシリアライゼーション メカニズムを介して休止状態のエンティティを渡すことができますが、遅延読み込み、コレクションの読み込み、およびセッションからのエンティティのデタッチには十分注意する必要があります。反対側では使えません。

于 2012-06-17T14:39:29.700 に答える