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

Spring Data JPA存储库和Spring Data JDBC存储库共享一个DB事务

司空坚
2023-03-14

最近,我注意到Spring Data JDBC,所以我决定在一个新的Spring Boot(2.3.1)应用程序中使用它。在我的用例中,我有一个包含两类表的DB模式:

  1. 用于存储应用程序(更复杂的)业务逻辑所使用的实体的表。我使用Spring Data JPA(带有底层Hibernate)来处理它们。
  2. 表,用于存储彼此之间没有太多关系的简单数据记录(例如来自外部系统的数据记录)。我决定对它们使用Spring Data JDBC,一方面是因为JPA将是不必要的过度杀戮,另一方面我不想为简单的查询而使用低级SQL。

我正在使用@transactional(propagation=propagation.requires_new)实现一个带有事务性方法的Spring@servicebean。这个服务方法在内部使用Spring Data JPA和Spring Data JDBC存储库来操作数据(CRUD)。我在JPA/JDBC存储库中没有使用任何@transactional注释(都是默认的)。我想知道我通过JPA存储库进行的DB修改是否与通过JDBC存储库进行的修改共享相同的DB事务。我需要这样做。

我知道,当我希望在两种类型的存储库之间共享一个DB事务时,需要两种存储库使用相同的DB连接。因此,Spring Data JDBC存储库需要使用与Spring Data JPA使用的EntityManager(Hibernatesession)相同的DB连接。这能以某种方式实现吗?还是开箱即用?你能帮我了解一下这在内部是如何运作的吗?提前非常感谢!

共有1个答案

刁茂才
2023-03-14

TL;Dr:它应该可以开箱即用。

Spring Data JDBC在底层使用jdbctemplate。实际上,它是一个,名为ParameterJDBCTemplate,但这并不重要。

有了这些信息,很明显这个问题包含了实际的答案:

 类似资料:
  • 我有一个用例,我需要从一个Kafka主题中消费,做一些工作,生成另一个只有一次语义的Kafka主题,并保存到mongo数据库。看完文档后,我想kafka事务和mongo事务可以同步,但它们仍然是两个不同的事务。在下面的场景中,如果mongo提交失败,是否有方法回滚提交到主题并从消费者处重播的kafka记录。

  • 问题内容: jenkins中的共享库文件在作业开始时加载,它存储在哪里?我正在尝试访问存储在共享库中的dockerfile,我需要在dockerbuild命令中提供的路径。有什么办法可以找出共享库文件在jenkins中的装载位置? 问题答案: 如果共享库是从SCM加载的,并且您的工作空间路径是,则将签出到或类似副本(如果该路径被另一个并发构建占用,则可能后缀数字)。 ,如果我理解正确,您是否不想在

  • 搜索仓库和镜像 你可以使用 Docker 来搜索所有公开可用的仓库和镜像。 $ docker search ubuntu 这将通过 Docker 提供的关键字匹配来显示您可用的仓库列表。 私有仓库将不会显示到仓库搜索结果上。你可以通过 Docker Hub 的简况页面来查看仓库的状态。 仓库 你的 Docker Hub 仓库有许多特性。 stars 你的仓库可以用星被标记,你也可以用星标记别的仓

  • 我想使用Spring LDAP 设置多个 LDAP 存储库。我的目标是同时在所有存储库中创建或更新对象。 我使用LdapRepository Spring接口,我认为目前这是不可能的。 我想知道我是否可以创建自己的LdapRepository来扩展Spring,但是我不知道如何开始。 这是我的配置: 完整地说,一个存储库: 知道怎么做吗? 提前感谢任何帮助。

  • 问题内容: 关于Spring JPA存储库事务性的1个快速问题。我有未标记为事务性的服务,并调用了Spring JPA存储库方法 它被定义为 问题是它失败,并且“ 没有EntityManager,当前线程没有可用的实际事务- 无法可靠地处理’remove’调用;嵌套异常是javax.persistence.TransactionRequiredException “异常。 好的,我可以通过将服务

  • 关于Spring JPA存储库事务性的1个快速问题。我有一个未标记为事务性的服务,并调用Spring JPA存储库方法 好的,我可以通过标记服务或deleteByEmail(..)来解决它方法作为事务性的,但我就是不明白为什么它现在会崩溃。Spring文档明确指出“存储库实例上的CRUD方法在默认情况下是事务性的。”(http://docs.spring.io/spring-data/jpa/do