gpt4 book ai didi

nhibernate 连接 Release模式 : why does the documentation recommened using "after_transaction"?

转载 作者:行者123 更新时间:2023-12-03 12:20:30 25 4
gpt4 key购买 nike

休眠文档说明如下:

The configuration parameter hibernate.connection.release_mode is used to specify which release mode to use. The possible values: *auto (the default) - equivalent to after_transaction in the current release. It is rarely a good idea to change this default behavior as failures due to the value of this setting tend to indicate bugs and/or invalid assumptions in user code. *on_close - says to use ConnectionReleaseMode.OnClose. This setting is left for backwards compatibility, but its use is highly discouraged. ...



我创建了一个集成测试,它通过同时打开两个 session 并操作同一个实体来引发 StaleObjectException。为确保测试在完成后回滚所有内容,测试内容放置在 TransactionScope 中;这会导致分布式事务启动,因为两个 session 将针对同一个环境事务打开一个数据库连接。我想将默认的 ConnectionReleaseMode 设置更改为“OnClose”,但如上所述,文档不建议这样做。谁能解释为什么改变默认行为不是一个好主意?

最佳答案

好的,因为没有其他人打扰我会尝试自己回答这个问题:-) 如果您使用一种模式,即在 session 被处理时提交事务(一个事务=一个 session ),您不妨使用“OnClose” Release模式.如果您使用 session 跨越多个事务的模式(例如每个业务事务的 session http://dotnetchris.wordpress.com/2009/01/27/conversation-per-business-transaction-using-postsharp-and-ioc/ ),则使用“OnClose”会占用不必要的资源,因为在提交事务时您没有将连接释放到连接池。默认的“after_transaction” Release模式会在提交事务时释放你的连接,从而释放你宝贵的数据库连接。

关于nhibernate 连接 Release模式 : why does the documentation recommened using "after_transaction"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1989150/

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