in linea di principio si, apro e chiudo la connessione ad ogni iterazione col db (il pooling del db servirà pure a qualcosa)
ovvio che se se devo recuperare sistematicamente dati con query differenti cerco di aggregarle per evitare ridondanze, creando un metodo ad hoc. In linea di massima però non mi capita quasi mai di aprire e chiudere ripetutamente (più di una volta per pagina), se devo fare più operazioni uso una via tipo:
//metodo che apre la connessione nella classe db
//metodo iterazione con db n.1
//metodo iterazione con db n.2
//metodo iterazione con db n.3
//metodo che chiude la connessione nella classe db
tutto sempre nel blocco try/catch/finally.
il modo di operare comunque dipende ovviamente sempre dal caso specifico