在没有 Spring Boot 应用程序的情况下使用 Spring Data JPA

Mag*_*ail 5 java jpa spring-data spring-data-jpa spring-boot


我想知道是否可以在没有 Spring 框架其余部分的情况下使用 Spring Data JPA?我在另一个项目的 Spring Boot Web 应用程序中使用了 Spring Data JPA,并且非常喜欢它的易用性。

现在我和一些朋友有一个没有服务器的桌面应用程序的小项目,并且真的很想使用 Spring Data JPA,但是我没有在任何地方找到关于是否可以在没有 Bean 或 Spring 框架的其余部分的情况下使用它的信息。

这是可能的还是我应该尝试使用另一个 JPA?

lub*_*nac 4

从你的问题来看,我怀疑对Spring + Java持久化生态系统存在一些误解:

  • 您可以在没有 Spring Boot 的情况下使用 Spring Data JPA(您需要使用 Spring Core,因为它是 Spring Data JPA 依赖项),但这对我来说没有多大意义,因为 Spring Boot 为您提供了很多方便的魔法和语法糖。
  • Spring + Spring Boot 生态系统主要针对 Web 应用程序定制,但也可用于非面向 Web 的应用程序。如果您正在编写桌面应用程序,您很可能会使用某些桌面平台(例如 Eclipse RCP)。这些通常不能很好地与 Spring 的依赖注入配合使用。您仍然可以使用其他独立的 Spring + Spring Boot 功能,但缺少重要的 Spring + Spring Boot 主干 -> IoC 容器。
  • Spring Data JPA 不是 JPA 提供者。它只是 JPA 标准之上的便利层,可以轻松地将 JPA ORM 插入到 Spring 应用程序中。它还使用 Spring Data 项目系列中的类似模式,使 Spring 开发人员能够轻松使用各种持久性存储。
  • 如果您希望使用 JPA(独立于 Spring 生态系统的 JEE 标准 API),您绝对可以使用一些 ORM(例如 Hibernate、Toplink)和 JPA(javax.persistence)API,而无需使用 Spring。

因此,要回答您的问题,您有两种选择:

  1. 如果您使用某种 Java 桌面框架(例如 Eclipse RCP 或基于 OSGi 的框架),则根本不要使用 Spring。您可能想要使用 Toplink(来自 Eclipse 社区)或带有 JPA API 的 Hibernate。
  2. 如果您正在开发需要利用 Spring IoC 的桌面应用程序,那么一定要使用 Spring + Spring Boot + Spring Data JPA 组合,而不需要 Web 功能。