【问题标题】:Can you run hibernate without a database set up?你可以在没有设置数据库的情况下运行休眠吗?
【发布时间】:2013-09-18 11:55:13
【问题描述】:

我目前正在开发一个使用休眠作为其 ORM 的应用程序;但是,目前我的机器上没有设置数据库,我想在没有数据库的情况下开始运行一些测试。我认为由于休眠是基于对象/代码的,因此必须有一种方法来模拟数据库功能。

如果没有办法通过hibernate做到这一点,那么在一般情况下(模拟数据库)如何实现?显然,它不需要处理大量数据,只需测试功能即可。

【问题讨论】:

  • 在这里放入一个 sqlite 文件可能是最简单的。

标签: java database hibernate


【解决方案1】:

只需使用像 Derby 这样的嵌入式数据库

也许您也可以尝试在 Windows 上使用 ODBC-JDBC 桥接并连接到 Excel 或 Access 文件。

【讨论】:

  • 据我所知,64 位 Java 中没有 JDBC-ODBC 桥接驱动程序。
  • @duffymo 应该是吧,很久没用了。
  • 不,我在 Windows 7 64 位上使用 JDK 6 和 7。没有桥接驱动程序。
【解决方案2】:

Hibernate 是一个对象-关系映射工具 (ORM)。没有对象和关系数据库就无法使用它。排除任何一个没有意义。

有很多开源、免费的关系数据库可供选择:

  1. MySQL
  2. PostgreSQL
  3. 超音速
  4. 德比
  5. MariaDB
  6. SQLite

您只受到下载和安装能力的限制。

【讨论】:

    【解决方案3】:

    其他选项正在使用内存数据库,例如 H2 / hsqldb

    【讨论】:

      【解决方案4】:

      我假设您已将所有 ORM 调用隐藏在一个干净的界面后面。
      如果你这样做了,你可以简单地编写由 Map 支持的该接口的另一个实现来缓存你的对象。

      然后您可以在您的测试环境中使用它。

      但是我必须同意@duffymo,你应该经历“第一次痛苦”并建立一个适当的工作环境。

      【讨论】:

        【解决方案5】:

        我正在使用H2。它的主要优点之一是使用方言来模拟更常见的 DB 的行为。例如 - 我正在使用PostgreSQL,我将Hibernate 的方言定义为PostgreSQL。我将它用于我的集成测试 - 在每个测试中,我都会创建适合我的测试场景的数据,然后很容易将其删除。无需回滚事务或任何东西。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-16
          • 2018-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-25
          • 2016-11-14
          相关资源
          最近更新 更多