英文:
Does Gorm automatically close the connection?
问题
我一直在使用基于AWS Lambda的应用程序中的GORM。我在每个Handler函数中使用了gorm.Open()。
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
所以有人可以帮我确认一下gorm.Open(...)是否会自动关闭连接?还是我必须使用下面的通用数据库接口?
// 获取通用数据库对象sql.DB以使用其函数
sqlDB, err := db.DB()
// Ping
sqlDB.Ping()
// Close
sqlDB.Close()
// 返回数据库统计信息
sqlDB.Stats()
英文:
I have been using GORM for my application based on AWS lambda. I used gorm.Open() for every Handler function,
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
so can someone help me confirm that does gorm.Open(...) automatically close the connection or not? Or I must use generic database interface bellow?
// Get generic database object sql.DB to use its functions
sqlDB, err := db.DB()
// Ping
sqlDB.Ping()
// Close
sqlDB.Close()
// Returns database statistics
sqlDB.Stats()
答案1
得分: 3
一个 gorm.DB
对象的设计初衷是可以被重复使用,就像一个 sql.DB
句柄一样。你很少需要显式地关闭这些对象。只需创建一次,然后重复使用即可。
gorm.DB
包含一个 sql.DB
,它使用连接池来管理连接。如果关闭了 gorm.DB
,它将停止接受新的查询,等待正在运行的查询完成,并关闭所有连接。
英文:
A gorm.DB
object is intended to be reused, like a sql.DB
handle. You rarely have to explicitly close these objects. Just create it once and reuse it.
gorm.DB
contains a sql.DB
which uses a connection pool to manage the connections. If it is closed, it will stop accepting new queries, wait for running queries to finish and close all connections.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论