gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:04:00 24 4
gpt4 key购买 nike

是否可以为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com