Spring 在没有 Spring 数据的情况下启动 JPA

Spring boot JPA without Spring data

我正在逐步将 Spring Boot 引入 Spring JPA 项目。我的意图是先介绍 Spring Boot,然后再介绍 Spring 数据,但我找不到任何使用 Spring Boot + JPA 的示例(也不是合适的启动器) 没有 Spring 数据。

怎么会?在没有 Spring 数据的情况下将 Spring 引导引入 Spring JPA 项目是否有任何好处,或者只有 Spring 数据就位才有意义。

任何文章 link 或示例代码都会有所帮助和赞赏,谢谢

更多上下文

我正在处理一个实时项目,所以每次更改都会带来风险。我们正在讨论从 XML 迁移到 JAVA 的配置,我提倡同时采用 Spring Boot,但我缺乏有说服力的卖点。

就个人而言,我想在所有层上包含 Spring 引导以提高未来的生产力,但我需要更好地论证在我们的 Service/DAO 模块中使用它的直接直接好处基于 Spring/JPA/Hibernate 的时刻与良好的旧手动 CRUD 实现。

所以我需要在持久层上使用 Spring 引导的卖点,但跨越 Spring 数据的卖点(例如配置增益、维护、测试...任何东西)

Spring 使用 JPA(例如 Hibernate)但不使用 Spring-Data-Jpa 意味着您直接与 JPA 实体管理器交互。通常你用它来实现你自己的 DAO,并使用 @Respository 注释。

@Respository
public class UserDao {
    @PersistenceContext EntityManager em;

    public User findUserByLogin(Sting login) {
        ....
    }
}

即使没有起始项目,您也可以使用 Spring-Data-JPA 项目,并以这种老式风格实现存储库。 (然后你可以展示当你只写 Spring-Data-JPA 接口时它变得多么简单)

正如上面人们所说的,没有 Spring Boot JPA。它可以是 Spring Boot Data JPA,也可以是 JPA 本身。

我能想到的直接好处:

  • 使用 Spring Data JPA,您无需编写 Dao 层。对于所有 CRUD 操作,CrudRepository 接口为您提供所需的一切。如果这还不够,您只需使用 @Query 注释来微调您的 SQL

  • 约定配置。例如,使用 Spring Boot,只需在类路径中具有 H2 依赖项即可获得 Spring 以使用 H2 内存数据库,为您提供数据源配置和事务管理(仅在 JPA 存储库级别)默认

  • 能够创建微服务。使用 Spring Boot,您可以创建可以部署的微服务,并且 运行 使用 java -jar ...

  • 在许多盒子上
  • 您可以使用一个简单的注释启用基于注释的事务:@EnableTransactionManagement

  • Java 配置超过 XML。这个优势不容小觑

  • 更少的代码(DAO 层)意味着更少的维护

  • 原生能力提供RESTfulAPI左右数据:https://spring.io/guides/gs/accessing-data-rest/

这完全取决于贵公司的发展方向。如果他们想更快地交付业务价值并转向更多 DevOps 运营模式,那么上述优势应该足以满足任何组织的卖点

据我所知,spring-boot意味着更方便,而不是任何独立的业务功能。

换句话说,spring-boot 帮助您以某种自动方式启动、配置您的应用程序。但是您可以在没有 spring-boot 的情况下使用您自己的特定配置来做到这一点。

因此,您将在您的应用程序中使用 spring-boot 意味着您将在您的原始应用程序中使用 spring-boot 的自动配置功能。

实际上,spring-data-jpa 中实现的 Spring JPA 是您要寻找的,而不是 spring-boot。当然,spring-boot 可以大大简化您的工作。