【问题标题】:DbUnit testing a PostgreSQL database using JPA without Hibernate or SpringDbUnit 在没有 Hibernate 或 Spring 的情况下使用 JPA 测试 PostgreSQL 数据库
【发布时间】:2011-09-28 19:34:46
【问题描述】:

我正在尝试使用 JPA 但不使用 Hibernate 或 Spring 编写 Java EE 6 应用程序。我使用 Netbeans 生成 JPA 类,并在 Postgres 中创建了表,但我无法在这些 JPA 类中运行 DbUnit 测试。

我尝试将我的测试单元建立在此站点中描述的示例上:http://www.roseindia.net/testingtools/DbUnit/gettingstarted.shtml,但它不起作用。即使我将 slf4j 添加到 IDE 中的项目库中,我仍不断收到“java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory”。

我觉得roseindia 站点示例相当奇怪的一点是,它似乎没有创建测试对象的调用者对象。我不确定是否需要调用者对象(在 JavaEE 编程中完成 n00b,但仍然有点迷失)。

【问题讨论】:

  • 当您使用 JPA 时,您必须使用 JPA 提供程序。如果您不想使用 Hibernate 作为您的提供者,那么您应该使用 EclipseLink、OpenJPA 或其他东西。完全使用没有 Hibernate 的 JPA 是什么意思?
  • 嗨,Behrang 我表达错了。我使用 EclipseLink 作为 JPA 提供程序。我的意思是我没有使用 Hibernate 框架本身,只是纯粹的 JPA 访问。

标签: postgresql jakarta-ee jpa dbunit


【解决方案1】:

如果您选择使用实体(带有@Entity 注释的java 类,表示数据库记录),您必须使用一些JPA 提供程序。不过,您并不局限于 Hibernate。

如果您对 JPA 感到害怕,您的另一个选择是使用纯 JDBC。它更容易理解,如果它是您的学习练习应用程序,那么尝试看看它是如何工作的可能是一个好主意。 JPA 建立在 JDBC 之上,因此当您认为自己已准备好使用它时,您将拥有扎实的知识库。

【讨论】:

  • 你好,MaDA 正如我告诉 Behrang 的,我使用 EclipseLink 作为 JPA 提供程序,我的意思是说我没有使用 Hibernate 框架,只是使用纯 JPA 来访问数据。而且,实际上,这既是一个现实世界的应用程序,也是一个学习练习,所以我有点陷入困境。我打算使用比 JDBC 更高级别的东西来完全抽象数据库访问,而 JPA 似乎是更好的选择。现在,我正在考虑使用 Hibernate FW 重新实现整个数据库层,只是为了看看它是否会更好地工作 =P
  • @Rafael 很好,坚持 JPA API 只会让您的应用程序更便携。但是 LoggerFactory 错误只是目标环境中缺少的库,因此与 JPA 无关。
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 2017-06-22
  • 2011-11-08
相关资源
最近更新 更多