0

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

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

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

蒂亚,

阿迪姆

4

4 回答 4

1

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

于 2009-10-30T18:05:35.957 回答
1

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

于 2009-10-30T18:07:50.180 回答
1

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

例如,编写一个WidgetRepository接口,它定义了数据访问 API 的小部件部分。然后,您可以提供实现您的接口的FileSystemWidgetRepositoryHibernateWidgetRepositoryXmlWidgetRepositoryJpaWidgetRepository等。

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

然后,您可以在使用它的对象中保留一个WidgetRepository引用。仅针对此接口编写代码。接下来,建立一个像Spring这样的依赖注入框架,它将基于一些 XML 配置或自动装配机制在运行时注入一个具体的WidgetRepository实现。

于 2009-10-30T18:09:58.430 回答
0

我开始认为 Hibernate 已经变得太大和臃肿,但我最近使用最新的 3.5 版本和使用 JPA 进行了一个项目,他们确实将其精简并使其比其他 3 中的一些更好.x 版本。我建议使用 Hibernate 的 JPA :-)

这种方法的一大优点是 Hibernate 在处理多种不同的数据库方言方面非常出色。我们的应用程序无需修改即可在 MySQL、H2 和 SQLServer 上运行(并且可能也可以在其他主要数据库上运行)。

于 2009-10-30T20:00:29.563 回答