我在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
}
Run Code Online (Sandbox Code Playgroud)
这是正确的做法,还是应该在整个应用程序中共享一个数据库连接,并让ORM处理管理连接?如这里所述?
您应该尽可能地重用数据库连接。而且gorm具有内置的连接池,因此,您不需要管理数据库句柄。只需在所有goroutine中共享它,它们便可以安全地共享该句柄,并根据需要分配新的连接。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |