8

約 100 のテーブルを持つ本番アプリケーションで TopLink/EclipseLink を使用して何年にもわたって開発した結果、JPA は実際の操作の複雑さと不確実性を追加する価値がなく、十分であると判断し、SQL (DBUtil などのラッパーを使用)そのように)私たちにぴったりの仕事をすることができます。

かなり大きな JPA アプリケーションを JDBC/SQL に移行して、JPA を実行したまま (つまり、GUI を使用した Web アプリケーション内) にする方法を提案できますか?それでも、JDBC への「ダウングレード」から始めることができます。 ?

エンティティとDAOがありますが、私の本当の心配はJPAエンティティキャッシュ(プライマリのもの)です-JPAが単純なconnection.begin()として機能するように完全に無効にすることは可能ですか?エントリ... connection.commit(); その間、私たちがそれを永久に取り除くまで?

4

2 に答える 2

2

皆さんが良い単体テストと統合テストを行ってくれることを願っています。そうでない場合は、ここから始めます。

その後、最初のステップで、abstract factoryすべての DAO とエンティティへのアクセスを提供する を作成し、クライアントからのすべてのアクセスをそのファクトリを経由するように変更できます。このステップでは、そのファクトリの実装を提供し、具体的なファクトリJpaAccessFactoryを作成して、そのメソッドが JPA を使用して埋められた DAO とエンティティを返すようにする必要があります。

最初のステップで何も悪くなかったと確信している場合。次に、2 番目のステップに進みます。

SqlAccessFactorySQL を使用して、DAO とエンティティ (エンティティ クラスのオブジェクトは実際には単なる DAO です) を埋めるファクトリ実装を作成します。両方のファクトリを使用するいくつかのユニット テストを作成し、providers by と provided by を使用してアサートをexpected作成 JpaAccessFactoryactualますSqlAccessFactory

でテーブルとそのすべての依存関係のファクトリ メソッドの実装が完了したら、SqlAccessFactoryこのメソッドによって提供される DAO またはエンティティを使用するクライアント/ページに、新しいファクトリを使用して取得させます。これを構成可能にすることができるので、使用されている魔女工場を変更するためにコードを変更する必要はありません。これには、何かが本来あるべきものではないことがわかった場合に、簡単に元に戻すことができるという利点もあります。

まだ実装されていないファクトリ メソッドは、SqlAccessFactory単に例外をスローする可能性があります

throw new UnsupportedOperationException
    ("Not yet implemented, please configure your client / page to use JPA.");

これが、どこからどのように開始するかのヒントになることを願っています。

于 2013-04-06T10:51:24.250 に答える