我正在编写一段代码,它从多个不同的地方对数据库进行调用。在此代码中,每次需要与数据库进行交互时,我就一直使用gorm.Open()。
gorm.Open()
我想知道的是,当我这样称呼时,幕后正在发生什么?每次调用时都会创建一个新的连接池吗?还是每次对gorm.Open()的调用都共享同一个连接池?
gorm.Open执行以下操作:(或多或少):
sql.Open
DB
DB.Ping()
这意味着为每个sql.DB创建一个gorm.Open对象。对于doc,这意味着每个DB对象一个连接池。
sql.DB
gorm.Open
这意味着sql.Open的建议适用于gorm.Open:
返回的数据库可以安全地被多个goroutine和维护自己的空闲连接池。因此,打开功能应该只调用一次。很少需要关闭数据库。