Я реализовал dao.go
файл со следующей реализацией:
type DbClient struct {
db *gorm.DB
}
GetDBClient()
инициализирует соединение с базой данных и возвращает (*DbClient, error)
func (db *DbClient) Close() {
db.db.Close()
}
- Различные методы CRUD
DbClient
И файл main.go
, который обслуживает все обработчикипотребляет это следующим образом:
var dbClient *DbClient
func main() {
db, err := GetDBClient()
if err != nil {
panic(err)
}
dbClient = db
defer dbClient.Close()
...
}
Таким образом, все обработчики main.go
используют глобальные dbClient
.
Безопасна ли эта архитектура потока и обеспечивает атомарность операций с базой данных?