Gorm会自动关闭连接吗?

huangapple go评论125阅读模式
英文:

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.

huangapple
  • 本文由 发表于 2021年11月1日 18:15:00
  • 转载请务必保留本文链接:https://go.coder-hub.com/69795462.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定