Debido a que las conexiones son bastante costosas, como han señalado otros, recomendaría usar una técnica de "conexión diferida" en la capa de su base de datos. Si ha estructurado su aplicación de manera efectiva, la lógica de su aplicación no debería preocuparse por cuándo se abren y cierran las conexiones, ya que esto estaría encapsulado en la capa de la base de datos. La capa de la base de datos, cuando se le pide que realice una consulta, primero verifica si tiene una conexión activa y, de no ser así, crea una. De esta manera, evitará abrir conexiones que nunca se usan y también tendrá una buena separación de lógica entre su aplicación y el código de la base de datos.