当前位置: 首页 > 知识库问答 >
问题:

没有Spring数据的Spring BootJPA

向子安
2023-03-14

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

怎么会?在没有Spring数据的情况下,将Spring Boot引入Spring JPA项目有什么好处吗?或者只有在Spring数据到位的情况下才有意义。

任何文章链接或示例代码将有所帮助和赞赏,谢谢

更多背景

我正在处理一个实时项目,因此每次更改都会带来风险。我们正在讨论从XML转向基于JAVA的配置,我主张同时采用Spring Boot,但我缺乏有说服力的卖点。

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

因此,我需要在持久性层上使用Spring Boot的卖点,但要超越Spring数据的卖点(例如,配置增益、维护、测试……任何东西)

共有3个答案

从建明
2023-03-14

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

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

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

实际上,在Spring数据JPA中实现的Spring JPA是您想要的,而不是Spring boot。当然,spring boot可以大大简化您的工作。

罗昱
2023-03-14

Spring有JPA(例如Hibernate),但没有Spring数据JPA意味着您可以直接与JPA实体管理器和进行交互。通常,您使用它来实现自己的DAO,并使用Respository注释。

@Respository
public class UserDao {
    @PersistenceContext EntityManager em;

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

即使没有初学者项目,也可以使用Spring数据JPA项目,并以这种旧式风格实现存储库。(然后,您可以展示当您只编写Spring数据JPA接口时,它变得多么简单)

拓拔泉
2023-03-14

正如人们在上面所说,没有Spring Boot JPA。它要么是Spring Boot数据JPA,要么是JPA本身。

我能想到的直接好处是:

>

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

    按约定配置。例如,使用Spring Boot,仅在类路径中具有H2依赖关系就可以让Spring使用内存中的H2数据库,在默认情况下为您提供数据源配置和事务管理(仅在JPA存储库级别)

    能够创建微服务。使用Spring Boot,您可以创建可以使用java-jar在多个盒子上部署和运行的微服务...

    您可以使用一个简单的注释来启用基于注释的事务:@EnableTransactionManagement

    XML上的Java配置。这一优势不容低估

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

    围绕数据提供RESTful API的本机能力:https://spring.io/guides/gs/accessing-data-rest/

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

  •  类似资料:
    • 我真的很喜欢Spring Data Rest为您编写的所有样板代码,但我宁愿只有一个“常规的?”REST服务器没有所有HATEOAS的东西。主要原因是,我在客户端使用Dojo Toolkit,它的所有小部件和存储都是这样设置的,即返回的json只是一个直接的项数组,没有所有的链接和类似的东西。有人知道如何用java配置来配置它,这样我就可以得到为我编写的所有mvc代码,但没有所有HATEOAS的东

    • 我有一个启用了自动配置的Spring boot应用程序。我的应用程序分为4个模块:核心、模型、rest和存储库。存储库模块使用Spring数据和Hibernate。它是一个包含所有类实体和所有spring数据存储库的模块。 问题是我的应用程序找不到EntityManagerFactory,在我看来应该通过基于添加的Hibernate依赖项的自动配置来创建。 我得到的错误是: 这是我的主要gradl

    • null 但是,每当我尝试将turbine添加到这个堆栈时,/turbine.stream只返回在浏览器上重复执行,结果Hystrix仪表板显示 有人能帮我找出哪里出了问题吗? 以下是我对涡轮的关键配置。TurbineAppliation类只是一个带有@enableTurbineStream的springboot应用程序,所以下面没有列出它。

    • 是否可以在没有数据库连接的情况下运行我的测试?如果是,我做错了什么/错过了什么?

    • 是否可以创建一个没有数据源的spring-boot应用程序?在我的情况下,我只需要一个简单的REST应用程序,但似乎在启动时,有一个尝试自动初始化一个数据源 我的pom.xml是 我的应用程序.属性是 当我跑的时候

    • 当我尝试自动连接扩展CrudRepository的接口时,我遇到了这个错误。我有两个用于两个数据库的hibernate xml配置。整个堆栈是 unsatisfiedDependencyException:创建名为“Hello Controller”的bean时出错:通过字段“stock service”表示的不满足的依赖项;嵌套异常为org.springframework.beans.facto