Я использую GORM ORM для доступа Postgres в приложении Go.
У меня есть 4 функции: создание, обновление, удаление и чтение в хранилище базы данных.
В каждой из этих функций я открываю соединение с базой данных, выполняю операцию CRUD и затем закрываю соединение сразу после выполнения операции, как вы увидите здесь и здесь и в приведенном ниже фрагменте кода, используя GORM
func (e *Example) Create(m *model.Example) (*model.Example, error) {
// open a database session
dbSession, err := e.OpenDB() //gorm.Open("postgres", connStr)
if err != nil {
log.Log(err)
return nil, err
}
// close database connection after operation is completed
defer dbSession.Close()
// create item
db := dbSession.Create(m)
if db.Error != nil {
return nil, db.Error
}
return m, nil
}
Это правильная практика, или одно соединение с базой данных должно быть общим для всего приложения и позволить ORM управлять соединениями? как указано здесь ?