Закрыть соединение с БД в Slick 3.0

Я использую Slick 3.x с Play 2.3.9 без play-slick, потому что play-slick не поддерживает эту комбинацию. Я читаю

http://blog.knoldus.com/2015/03/03/play-with-reactive-slick-a-simple-crud-application-in-play-framework-using-slick-3-0/

И упомянул, что соединение с базой данных должно быть закрыто явно, т.е.

def delete(id: Long): Future[Int] =
    try db.run(filterQuery(id).delete)
    finally db.close

Нужно ли явно закрывать соединение, как указано в статье? Будет db.close закрывает соединение и пул? Потому что, OTH, примеры в документе Slick 3.0 явно не закрывали соединение. Я мог бы неправильно понять документ. Спасибо

2 ответа

db.close закрывает пул соединений. Вы, вероятно, не хотите этого делать. То, как он записан в БД, скорее всего, закроется до обработки запроса к базе данных.

db.close не закрывает связи или заявления. Это было сделано автоматически для вас в предложении db.run()

Я проверил список процессов MySQL, show processlistи обнаружил, что приложение не подключалось больше, чем было указано в настройках приложения, и продолжало принимать запросы больше, чем допустимые подключения к базе данных. Это показывает, что после каждого запроса соединение БД возвращается в пул в пределах db.run(...) и db.close не требуется.

Другие вопросы по тегам