【问题标题】:Java - DAO Layer or PluginJava - DAO 层或插件
【发布时间】:2009-10-30 18:00:40
【问题描述】:

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

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

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

蒂亚,

adym

【问题讨论】:

    标签: java frameworks persistence dao


    【解决方案1】:

    抽象所有这些并使用 JPA 怎么样

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 听起来 JPA 是这里的一个常见线程......我现在需要做一些阅读...... tia,adym
          猜你喜欢
          • 1970-01-01
          • 2014-08-15
          • 1970-01-01
          • 2018-05-02
          • 2014-07-04
          • 1970-01-01
          • 2012-02-14
          • 2011-12-28
          • 2011-04-22
          相关资源
          最近更新 更多