Java-DAOレイヤーまたはプラグイン
-
22-07-2019 - |
質問
SourceForgeのJBJFプロジェクトに取り組んでおり、このフレームワークのデータベースアクセスを改善したいと考えています。現在、それは半柔軟ですが、アクセスはタスクレベルで行われます。
私たちは、本質的に汎用で、JBJFとの間のデータベースアクセスをホストできる、ある種の単純なインターフェイスをセットアップしたいと考えています。したがって、フレームワーククラスはどのようなデータベースを気にしません。getConnection()などのメソッドを呼び出すだけで、java.sql.Connectionオブジェクトが返されます。
XMLファイルでデータベースサービスを設定し、フレームワークが起動時にプラグインをロードする、単一のインターフェイスまたはプラグインタイプの構造を備えた典型的なDAOレイヤーは、より適しているのかと思います。
tia、
アディム
解決
Hibernateは大きくなりすぎて肥大化していると考え始めていましたが、最近、最新の3.5リリースとJPAを使用してプロジェクトに取り組みました。他の3.xリリース。 Hibernateを使用したJPAをお勧めします:-)
このアプローチの素晴らしい点の1つは、Hibernateが複数の異なるデータベース方言をうまく処理できることです。このアプリは、変更なしでMySQL、H2、およびSQLServerで実行されます(おそらく他の主要なデータベースでも実行される可能性があります)。
他のヒント
これらすべてを抽象化してJPAを使用する方法
詳細を知らずに言うのは難しいですが、一般に、私は独自のフレームワークを作成せず、代わりにHibernateまたは同様のORMツールを使用します。オブジェクトをテーブルにマッピングしたり戻したりするためのXMLをすでに定義しており、さまざまなデータベース実装を簡単に交換できます。一般的に、この種のことを行うための優れたツールです。
リストする2つのオプションは相互に排他的ではありません。インターフェース/ APIを介してアクセスするDAO /リポジトリレイヤーを使用できますが、具体的な実装は依存関係を満たすために実行時に注入されます。
たとえば、データアクセスAPIのウィジェット部分を定義する WidgetRepository インターフェースを記述します。次に、インターフェースを実装する FileSystemWidgetRepository 、 HibernateWidgetRepository 、 XmlWidgetRepository 、 JpaWidgetRepository などを提供できます。
一般的なルールは、要件を満たしながら、できるだけ高いレベルの抽象化を使用することです。私が挙げたリストの例では、JPMベースのリポジトリはORMフレームワークをも抽象化するため、最高レベルになります。
その後、それを使用するオブジェクトに WidgetRepository 参照を保持できます。このインターフェイスに対してのみコーディングします。次に、