Закрывает ли Gorm соединение автоматически?

# #go #aws-lambda #go-gorm

Вопрос:

Я использую GORM для своего приложения на основе AWS lambda. Я использовал gorm.Открыть() для каждой функции-обработчика,

 db, err := gorm.Open(mysql.Open(dsn), amp;gorm.Config{
        Logger: logger.Default.LogMode(logger.Info),
    })
 

итак, может кто-нибудь помочь мне подтвердить, что это делает gorm.Открыть (…) автоматически закрывает соединение или нет? Или я должен использовать общий интерфейс базы данных, приведенный ниже?

 // 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:

gorm.DB Объект предназначен для повторного использования, как sql.DB дескриптор. Вам редко приходится явно закрывать эти объекты. Просто создайте его один раз и повторно используйте.

gorm.DB содержит a sql.DB , который использует пул соединений для управления соединениями. Если он закрыт, он перестанет принимать новые запросы, дождется завершения выполнения запросов и закроет все соединения.