【问题标题】:DB Independent Java Programming - Suggestions? [closed]DB 独立 Java 编程 - 建议? [关闭]
【发布时间】:2011-09-07 15:15:39
【问题描述】:

我正在寻找一个具有以下要求的 java 程序:

  1. 能够在不更改代码的情况下替换正在使用的数据库。
  2. 我想通过 Java 进行维护 - 创建表、视图等。
  3. 应该能够支持复杂的查询

JDBC 似乎是一个很好的起点,但对于不同的 DB,查询似乎可能不同(例如,在 MySQL 和 MSSQL 中创建表语句的细微语法差异)。

这个想法(显然)是避免专门为每个 DB 编写相同的代码,并依靠驱动程序为我完成繁琐的工作。

JDBC 是否足够好?还有其他选择吗?

【问题讨论】:

  • JDBC 是一个糟糕的起点,即使没有多个数据库要求。多数据库要求使其完全不足。

标签: java sql database jdbc


【解决方案1】:

JPA 似乎是您的最佳选择。它几乎是开箱即用的。将直接数据库处理抽象出来,可以独立使用(没有应用程序服务器)。

JDBC 仍然是一个有效的选项,但使用它的开发不像使用 JPA(可以看作是 JDBC 之上的抽象层)那样与 DB 无关。

Here 就是一个很好的例子。

最流行的 JPA 实现是 HibernateEclipselink,其中 Eclipselink(前 TopLink)是参考实现。

【讨论】:

    【解决方案2】:

    我会考虑 Hibernate 或其他 ORM 解决方案。

    在最简单的情况下,您可以使用属性文件来换出数据库而无需更改代码。如果您使用 Maven,您可能需要查看配置文件。

    【讨论】:

      【解决方案3】:

      当 Hibernate 有点过头时,两个库可以提供帮助:

      1. 表维护 - 创建、删除 (DDL) - DDLUtils
      2. 创建 SQL 查询以检索信息 - JOOQ

      【讨论】:

      【解决方案4】:

      您应该开始寻找Hibernate。这正是您要搜索的内容。

      【讨论】:

        【解决方案5】:

        你需要的是一个设计模式看看这个。 我认为这可能会有所帮助

        Core J2EE Patterns - Data Access Object

        【讨论】:

          【解决方案6】:

          如果您真的想拥有数据库独立性,请不要在代码中添加任何语句。而是将它们存储在外部文件中。

          您可以从mysql.ddl 开始。然后,如果您切换到 oracle,您将使用与 mysql.ddl 相同的格式创建 oracle.ddl,但查询不同。

          如果您的数据库访问是它自己的项目,这是可扩展的,因为现在与该数据库通信的其他应用程序也将能够利用您编写的现有 ddl 文件。

          【讨论】:

            猜你喜欢
            • 2021-03-01
            • 1970-01-01
            • 2010-10-02
            • 1970-01-01
            • 2020-07-14
            • 2018-07-29
            • 2012-08-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多