Как оформить закрытие соединения с базой данных, открытого из пакета в Go?

Довольно глупый вопрос, но убил уже кучу времени, пытаясь найти, как это принято\удобно реализовывать. Своё веб-приложение строю по модели MVC, соответственно, вся работа с базой данных идёт из пакета с моделями, прямыми запросами и database/sql. Опять же, инициализировать все необходимые соединения я планирую с помощью init() соответствующего модуля, т.е. defer не поможет. Однако если с этой частью вопросов нет, то как быть с закрытием подключения к базе данных - вопрос.
Все примеры, которые я видел, либо слишком просты, и там всё делается в main.main(), либо используются ORM типа gorm, и о закрытии подключений вообще нигде речь не идёт.

Спасибо!
  • Вопрос задан
  • 2415 просмотров
Решения вопроса 1
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
sql.Open(...) возвращает вам sql.DB Это - пулл соединений с базой данных реализованный через подходящий драйвер. Механика распределения транзакций по соединениям в этом пуле уже реализована в библиотеке database/sql и драйвере. То есть в обычной ситуации ничего закрывать просто не нужно. Веб-приложение это долгоиграющий процесс и соединение с базой данных ему нужно постоянно. Если однако существует момент в котором вы хотите явно разорвать соединение, то DB.Close(). Пользуются им редко.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы