DB独立Java编程 - 建议?

时间:2011-09-07 15:15:40

标签: java sql database jdbc

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

  1. 能够在不更改代码的情况下替换正在使用的数据库。
  2. 我想从Java维护 - 创建表,视图等。
  3. 应该能够支持复杂的查询
  4. JDBC似乎是一个很好的起点,但对于不同的数据库,似乎查询可能会有所不同(例如,在MySQL和MSSQL中创建表语句会有轻微的语法差异。)

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

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

6 个答案:

答案 0 :(得分:5)

JPA似乎是您的最佳选择。它的工作几乎是开箱即用的。抽象直接DB处理,可以单独使用(没有应用程序服务器)。

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

Here就是一个很好的例子。

最受欢迎的JPA实现是HibernateEclipselink,其中Eclipselink(以前的TopLink)是参考实现。

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

当Hibernate过度使用时,有两个可以提供帮助的库:

  1. 表维护 - CREATE,DELETE(DDL) - DDLUtils
  2. 创建SQL查询以检索信息 - JOOQ

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

Core J2EE Patterns - Data Access Object

答案 5 :(得分:0)

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

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

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