gpt4 book ai didi

go - 是否应该在每个 CRUD 方法中打开和关闭数据库连接?

转载 作者:IT王子 更新时间:2023-10-29 00:57:17 25 4
gpt4 key购买 nike

我在 Go 应用程序中使用 GORM ORM 访问 Postgres。我在数据库存储库中有 4 个函数,创建、更新、删除和读取。

在每个函数中,我打开一个数据库连接,执行一个 CRUD 操作,然后在执行操作后立即关闭连接,如您所见 herehere在下面的代码片段中,使用 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 处理管理连接?如所述here

最佳答案

您应该尽可能多地重复使用数据库连接。 gorm 也有一个内置的连接池,所以,你不需要管理数据库句柄。只需在所有 goroutine 之间共享它,它们就可以安全地共享句柄,根据需要分配新的连接。

关于go - 是否应该在每个 CRUD 方法中打开和关闭数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56190998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com