【问题标题】:Use Spring Data JPA without Spring Boot application在没有 Spring Boot 应用程序的情况下使用 Spring Data JPA
【发布时间】:2018-07-12 17:59:34
【问题描述】:


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

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

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

【问题讨论】:

  • 没有弹簧芯,没有。没有 Spring Boot,是的。
  • 是的。 Spring Data 不依赖于 Spring Boot
  • 可以在非web项目中使用SpringBoot java2novice.com/spring-boot/standalone-application
  • 我认为也应该可以将 spring boot 用于桌面应用程序。其次,“另一个 JPA”不是 Spring Data JPA 的替代品,而是 Boot 在后台使用的 Hibernate。

标签: java jpa spring-boot spring-data spring-data-jpa


【解决方案1】:

从你的问题来看,我怀疑对 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 社区)或 Hibernate 与 JPA API 一起使用。
  2. 如果您正在做的桌面应用程序可以利用 Spring IoC,那么一定要使用没有 Web 功能的 Spring + Spring Boot + Spring Data JPA 组合。

【讨论】:

  • 非常感谢您的广泛回答 :) 我想我会考虑更多地研究 Spring IoC,还没有对 Spring 做太多事情,但是当我研究纯 Hibernate 时,我有点失望的,当我查阅了几个教程时,它们都使用 XML 进行了配置,因为我真的很想在纯 java 中做尽可能多的事情。非常感谢!
  • 我有一个不使用 Spring 的 Web 应用程序。有没有办法在我的应用程序中获取从方法名称派生的查询?这是我想要从春季数据中获得的唯一方面。
  • @jkerak,没有。
  • @luboskrnac 是的,Spring Data JPA 可能是这样,但我最终发现“Apache Deltaspike Data”库(使用 Weld 进行 CDI 和 Hibernate 进行 JPA)是 Spring Data 的一个不错的替代品在我的非弹簧应用程序中。
  • 该项目没有使用 Spring IoC,而是依赖于 CDI,CDI 也是使用 IoC 模式,但它是 JacartaEE(前 JavaEE)标准。您将使用类似于 Spring 的东西,但不太常见。
【解决方案2】:

Spring Data 在 Spring Framework 上中继。所以没有 Spring 框架就无法使用它。

但是您可以在独立应用程序中使用 Hibernate。

【讨论】:

    【解决方案3】:

    Apache DeltaSpike Data 模块提供与 Spring Data JPA 类似的功能(扩展存储库接口,按约定查询),而不需要 Spring。您只需要提供 CDI 和 JPA 实现(例如,Weld 和 Hibernate 就可以)

    【讨论】:

      猜你喜欢
      • 2020-12-09
      • 2018-05-15
      • 2017-10-09
      • 1970-01-01
      • 2018-09-17
      • 2014-08-21
      • 2016-06-01
      • 2014-07-21
      • 2018-08-27
      相关资源
      最近更新 更多