我正在逐步将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数据的卖点(例如,配置增益、维护、测试……任何东西)
据我所知,spring boot意味着更方便,而不是任何独立的业务功能。
换句话说,spring-boot
可以帮助您以某种自动方式启动、配置您的应用程序。但是您可以在没有spring-boot
的情况下使用您自己的特定配置来做到这一点。
因此,您将在应用程序中使用spring boot意味着您将在原始应用程序中使用spring boot的自动配置功能。
实际上,在Spring数据JPA中实现的Spring JPA是您想要的,而不是Spring boot。当然,spring boot可以大大简化您的工作。
Spring有JPA(例如Hibernate),但没有Spring数据JPA意味着您可以直接与JPA实体管理器和进行交互。通常,您使用它来实现自己的DAO,并使用Respository注释。
@Respository
public class UserDao {
@PersistenceContext EntityManager em;
public User findUserByLogin(Sting login) {
....
}
}
即使没有初学者项目,也可以使用Spring数据JPA项目,并以这种旧式风格实现存储库。(然后,您可以展示当您只编写Spring数据JPA接口时,它变得多么简单)
正如人们在上面所说,没有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