Закрыть соединение с БД в 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 не закрывали соединение явно. Я мог неправильно понять документ. Спасибо


person thlim    schedule 13.10.2015    source источник


Ответы (2)


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

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

person Andrew Norman    schedule 21.03.2018

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

person thlim    schedule 17.10.2015