我们使用spring security的JdbcTokenStore来持久化oAuth2访问令牌。同样的应用程序也严重依赖spring数据jpa。两者共享到MySQL数据库的连接池。
Jdbc默认为自动提交模式,而JdbcTokenStore似乎是在自动提交启用的假设下编写的。它从未明确提交更改。
另一方面,Spring-data和JPA需要一个事务来进行写入操作。应用程序使用@Transactional注释。
我们正在观察以下问题:
如果来自请求(1)的事务尚未提交,则可以解释这种行为。
我不太熟悉Spring的内部结构。是否可能发生以下情况?
什么配置可以避免这种情况?
虽然我无法解释根本原因,但我们找到了一个修复方法:切换到HikariCP JDBC连接池(取代Tomcat)消除了描述问题的所有症状。
最近,我注意到Spring Data JDBC,所以我决定在一个新的Spring Boot(2.3.1)应用程序中使用它。在我的用例中,我有一个包含两类表的DB模式: 用于存储应用程序(更复杂的)业务逻辑所使用的实体的表。我使用Spring Data JPA(带有底层Hibernate)来处理它们。 表,用于存储彼此之间没有太多关系的简单数据记录(例如来自外部系统的数据记录)。我决定对它们使用Sp
这里是Spring Boot。我目前在我的所有JPA实体中使用JPA/Hibernate以及接口,到目前为止它一直对我很有用。我需要执行一个需要的复杂查询,据我所知,Hibernate不支持联合(或者至少不容易支持它们)。我已经通过在我的中尝试了十几个不同的JPQL查询进行了验证,所有这些查询都失败了,因为Hibernate(JPA提供程序)不喜欢。 因此,在这一种情况下,我完全可以使用原始JDB
我们在应用程序中使用了Hibernate/JPA、Spring、Spring Data和Spring Security。我有一个标准的实体,它是使用JPA映射的。此外,我还有一个 它遵循Spring数据约定来命名查询方法。我有一个实体 如何避免这种递归?是否有“规范的方式”来加载实体?或者有没有一种方法可以防止Hibernate/JPA冲洗?
问题内容: 我只有一个数据源,我使用Spring 3.0.3,Hibernate 3.5.1作为JPA提供程序,并且使用MyBatis 3.0.2进行某些查询,并且我的应用程序在Tomcat 6上运行。当我同时调用HibernateDAO和MyBatisDAO时,从@Transactional注释的同一方法中,它们似乎不共享同一事务,它们获得了不同的连接。 我该怎么做? 我尝试从DataSourc
Spring-JPA和Spring-Data-JPA之间的区别,我不是指JPA规范。 我是JPA和Spring的新手。 在将Hibernate与Spring集成为JPA提供程序时,我遇到了两个Spring项目。 请澄清一下 https://mvnrepository.com/artifact/org.springframework/spring-jpa之间的区别和关系 https://mvnrep
问题内容: 我在Web应用程序中使用spring-boot,并使用spring- jpa从数据库中读取/写入数据库。它工作得很好,但是我想了解如何管理数据库连接。以下是我的数据库属性配置: 我已将最大连接数设置为500。当用户在我的spring应用程序上发出请求时,将为他打开数据库连接。完成请求后,spring jpa会关闭此连接吗?如果没有,它将何时关闭未使用的连接? 我已经阅读了http://