JDBC ドライバーの実装を作成しました。これにより、2 つの DB (postgres と mysql など) への接続が管理されます。すべての JDBC 操作で、これらの接続が維持され、特定のロジック リクエストに基づいて処理されます。私の質問は
- これは良いアプローチですか?そうでない場合、誰かがいくつかの指針を与えることができます
- そのような実装ではメモリ管理が問題になりますか?
1) 通常、このようなことは DAO (Data Access Object、永続性を管理するレイヤー) によって管理されます。それを JDBC ドライバーにすることは、コーディングを困難にする特定の制限に従うことを強制するだけです (あなたのドライバーはあまり再利用できないことは理解しています)。
2)どれだけうまくコーディングしたかによって異なります。詳細がわからないとわかりませんが、メモリ管理の問題が発生しなければならなかった理由はありません。
これは良いアプローチだとは思いません。
根本的な問題は、さまざまなデータベース バックエンドに、統一された JDBC ドライバーで「ペーパー オーバー」するのが困難な違いがあることです。最も明白な問題は、SQL のさまざまな方言の間に (重要な) 違いがあることです...サポートされているデータ型の違いを含みます。アプリケーション レベルのコードが通常どおりに JDBC API を使用しているため、これらの違いを隠すことは困難 (または不可能) です。
うまく機能する 2 つのアプローチがあります (IMO)。
典型的なオブジェクト リレーショナル マッピング (休止状態など) は、違いを処理する複数のデータベース バックエンドにアダプターを提供します。これを行うには、クエリをより抽象的な方法で表現し、そのクエリを舞台裏でデータベース固有の SQL に変換します。
アプリケーションに固有のデータベース アダプタ コードで、データベース固有の側面を自分で処理します。これには、方言の違いに対処するためにクエリを生成またはテンプレート化するための独自のフレームワークを構築する必要があります。次に、既存のデータベース固有の JDBC ドライバーを使用して、適切な種類の SQL を渡します。
FWIW - メモリ管理があなたの提案で特に問題になる理由がわかりません。