Java - DAO层或插件

时间:2009-10-30 18:00:40

标签: java frameworks persistence dao

我在SourceForge上处理JBJF项目,我们希望改进此框架的数据库访问。目前,它是半灵活的,但访问是在任务级别完成的。

我们想设置一种简单的接口,它本质上是通用的,可以托管JBJF的数据库访问。因此,Framework类不关心什么样的数据库,它们只调用getConnection()这样的方法,并返回java.sql.Connection对象。

我想知道什么是更适合的,一个典型的DAO层具有单个接口或插件类型结构,我们在XML文件中配置数据库服务,并且Framework在启动时加载插件。

TIA,

adym

4 个答案:

答案 0 :(得分:1)

如何抽象所有这些并使用JPA

答案 1 :(得分:1)

在不知道细节的情况下很难说,但总的来说,我不会编写自己的框架,而是使用Hibernate或类似的ORM工具。它已经定义了XML用于将对象映射到表和返回,可以轻松地交换进/出不同的数据库实现,并且通常是用于执行此类操作的很好的工具。

答案 2 :(得分:1)

您列出的两个选项并不相互排斥;你可以有一个DAO / Repository层,你可以通过一些接口/ API访问,而具体的实现是在运行时注入的,以满足你的依赖。

例如,编写 WidgetRepository 接口,该接口定义数据访问API的小部件部分。然后,您可以提供实现您的界面的 FileSystemWidgetRepository HibernateWidgetRepository XmlWidgetRepository JpaWidgetRepository 等。

一般规则是尽可能使用尽可能高的抽象级别,同时仍满足您的要求。在我给出的示例列表中,基于JPA的存储库将是最高级别,因为它甚至抽象了ORM框架。

然后,您可以在对象中保留 WidgetRepository 引用,并使用它。仅针对此接口的代码。接下来,建立一个Dependency Injection框架,如Spring,它将在运行时根据一些XML配置或自动布线机制注入一个具体的 WidgetRepository 实现。

答案 3 :(得分:0)

我开始认为Hibernate已经变得过于庞大和臃肿,但我最近使用最新的3.5版本和使用JPA进行了一个项目,他们肯定会减少它并使它比一些更好。其他3.x版本。我推荐使用Hibernate的JPA: - )

这种方法的一大优点是Hibernate在处理多种不同的数据库方言时有多好。我们的应用程序在MySQL,H2和SQLServer上运行,无需修改(也可能只在其他主要数据库上运行)。