質問

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 参照を保持できます。このインターフェイスに対してのみコーディングします。次に、 Dependency Injection フレームワークを配置します。 .springsource.org / about "rel =" nofollow noreferrer "> Spring 。XML構成または自動配線メカニズムに基づいて、実行時に具体的な WidgetRepository 実装を挿入します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top