java - 如何在connection.release_mode中设置与 'auto'不同的值(spring + hibernate)

标签 java spring hibernate connection isolation-level

是否可以为 hibernate 属性设置一个与“auto”不同的值 - “connection.release_mode”?

我们将 Spring 与 hibernate 一起使用,当我尝试在此属性中定义 - 'after_transaction' (当我在 session 工厂定义中定义 hibernate 属性时),在运行时我得到一个异常(Spring 异常),唯一有效的值(在Spring 术语)此 Prop 是“on_close”。这个事实给我们带来了很多麻烦。我们使用每个请求 session 模式(意思是“客户端向运行 Hibernate 持久层的服务器发送一个请求。Hibernate 打开一个新的 Session,所有数据库操作都在这个工作单元中执行。”( hibernate doc )。定义 on_close 时 - 每个服务都会分配连接(不会重复使用连接)。

我们使用HibernateTransactionManager结合TransactionInterceptor来管理事务。我们使用 AnnotationSessionFactoryBean (我们的 session 工厂)处理 session ,我尝试在“hibernateProperties”部分中的 session 工厂声明中定义 -> connection.release_mode=after_transaction。在运行时,当服务器尝试加载 session 工厂时,我得到了这个异常:

org.springframework.transaction.InvalidIsolationLevelException: HibernateTransactionManager is not allowed to support custom isolation levels: make sure that its 'prepareConnection' flag is on (the default) and that the Hibernate connection release mode is set to 'on_close' (SpringTransactionFactory's default). Make sure that your LocalSessionFactoryBean actually uses SpringTransactionFactory: Your Hibernate properties should *not* include a 'hibernate.transaction.factory_class' property!
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:515)
    ... 121 more

为什么 Spring 会这么做?有没有旁路

如有任何建议,我们将不胜感激。

最佳答案

要设置不同的连接 Release模式,您必须创建一个文件

src/main/resources/hibernate.properties

并设置值

hibernate.connection.release_mode=AFTER_STATEMENT

可以找到其他可用值 here

关于java - 如何在connection.release_mode中设置与 'auto'不同的值(spring + hibernate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223019/

相关文章:

java - java中Hashmap和ArrayList添加值的方式不同

java - 如何使用 JDBC 在 MySQL 数据库中保存 html 文件?

java - Tomcat7 Spring Maven Mysql 对于类型 avax/el/ExpressionFactory 有不同的 Class 对象;

java - 在 Spring AbstractRoutingDataSource 中访问 Struts2 语言环境

java - 使用 Groovy 1.8、Hibernate JPA 注释构建失败

java - 如何在for循环中找到第二大的数

java - 从不同的文件夹java读取配置文件

java - 为什么 Spring ORM JpaTransactionManager 使用 native 实体管理器工厂?

hibernate - Jpa - Hibernate @Version 错误地递增

java - 带注释的 Hibernate-如何从连接列表中进行选择?