Deixar a conexao sempre aberta pode ser uma estrategia. Abrir e fechar pode ser outra. Utilizar um pool que gerencia isso pra voce, outra.
Acho que os exemplos mostram a conexao sendo aberta e logo fechada pois (1) isso eh o mais simples pra quem esta comecando, (2) os exemplos sao voltados pra Web, onde associar a conexao aberta do banco com um usuario eh loucura e (3) disciplina o desenvolvedor a ter responsabilidade para com recursos finitos (conexoes, threads, etc) - ja que em Java nao eh como em PHP que voce abre a conexao e pode sair pra passear. 
Dentre as opcoes disponiveis, veja o que teu projeto precisa. Um sistema “desktop”, com um banco dedicado, poderia trabalhar com uma conexao aberta o tempo todo, por exemplo. Mas isso sao excecoes, eu acho. Para a maioria dos casos um pool eh a melhor opcao - ele cuida dos detalhes pra voce (abrir, fechar, acompanhar se o numero de conexoes abertas eh adequado, etc). Exemplos: DBCP (do Jakarta), C3PO.
Ah, como de praxe: seja bem-vindo ao GUJ e procure sempre utilizar titulos descritivos para seus posts. Assim os leitores sabem do que se trata antes de entrar no post, alem de melhorar as futuras buscas no forum. 
Marcio Kuchma