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

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

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

蒂亚,

阿迪姆

有帮助吗?

解决方案

我开始以为休眠已经得到过大和臃肿,但我已经使用了最新的3.5版本最近进行的项目和使用JPA,他们已经肯定瘦身下来,使它远远超过了一些更好其他3.X版本。我建议JPA使用Hibernate: - )

一个对这种做法的伟大的事情是进入休眠模式有多好,在处理多个不同的数据库方言。我们的应用程序上的MySQL,H2,和SQLServer运行不做任何修改(并可能会在其他主要的数据库只运行也一样)。

其他提示

如何约抽象所有远,并使用JPA

这很难不知道的细节说,但在一般情况下,我不会写我自己的框架,而是使用休眠或类似的ORM工具。它已经定义了XML的对象映射到表背,可输入/输出不同的数据库实现轻松更换,一般是做这种事情的好工具。

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

例如,写一个 小部件存储库 定义数据访问 API 的小部件部分的接口。然后您可以提供一个 文件系统小部件存储库, HibernateWidgetRepository, XmlWidgetRepository, JpaWidgetRepository, , ETC。它实现了你的接口。

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

然后你可以保留一个 小部件存储库 使用它的对象中的引用。仅针对此接口编写代码。接下来,放置一个 依赖注入 类似框架 春天, ,这将注入混凝土 小部件存储库 基于一些 XML 配置或自动装配机制在运行时实现。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top