gpt4 book ai didi

grails - 创建SQL对象时使用SessionFactory与DataSource进行Grails

转载 作者:行者123 更新时间:2023-12-02 15:21:19 25 4
gpt4 key购买 nike

在Grails中,我可以通过2种方式创建Sql对象:

def sql = new Sql(sessionFactory.currentSession.connection())
def sql = new Sql(dataSource)

我已经在Stackoverflow上阅读了此线程: Getting the SessionFactory for a particular Datasource in Grails
...,答案之一是dataSource“...更好地吞噬了过多的连接,以使用sessionFactory.currentSession.connection()”

此建议正确吗?两者之间有什么区别?

检查创建的对象时,我可以看到它们几乎相同,只有两个属性不同:
数据源使用连接

对于 dataSource ,它是dataSource = TransactionAwareDataSourceProxy和useConnection = null,而对于 sessionFactory ,它是dataSource = null和useConnection = $ Proxy 36。

为什么这会因“怪异过度连接”而有所不同?

最佳答案

关于“增加过多连接”的评论基于一些假设,在您的情况下可能正确,也可能不正确。

假设是由于Grails和GORM使用 View 模式中的 session ,因此Hibernate在请求期间将要或已经或将要创建与数据库的连接。在这种情况下,您将对Hibernate使用一个连接,对其他连接使用n-number。

如果您混合使用GORM和SQL连接,则从sessionFactory获取连接更为安全。

我似乎还记得,即使在请求期间未执行任何GORM方法,Grails仍旧使用旧版本来创建连接。我不完全确定最新版本(2.x +)的情况仍然如此

关于grails - 创建SQL对象时使用SessionFactory与DataSource进行Grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35534230/

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