登录
首页 >  Golang >  Go问答

应该为每个 CRUD 方法单独打开和关闭数据库连接吗?

来源:stackoverflow

时间:2024-03-26 18:09:33 447浏览 收藏

在使用 gorm ORM 进行 PostgreSQL 访问时,应尽可能重用数据库连接,而不是在每个 CRUD 方法中打开和关闭连接。gorm 提供内置的连接池,可以安全地在多个协程之间共享连接,根据需要分配新连接。

问题内容

我正在 go 应用程序中使用 gorm orm 进行 postgres 访问。 我在数据库存储库中有 4 个函数:创建、更新、删除和读取。

在每个函数中,我使用 gorm 打开一个数据库连接,执行 crud 操作,然后在执行操作后关闭连接,如您将在此处、此处以及下面的代码片段中看到的那样

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 处理管理连接?如这里所述?


解决方案


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

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>