Bom dia.
Depende das circunstâncias.
Se você for utilizar a mesma conexão por várias classes, é recomendável que você use os designs patterns AbstractFactory e Singleton (Uma classe responsável por "fabricar" a conexão, e só vai existir uma instância do objeto Connection para todas as classes que precisem dela).
Ex:
[...]
private Connection conexao = null;
public [b]static[/b] Connection getConnection() {
if ( conexao == null ) { // ainda não foi criada uma instância de Connection
conexao = new Connection(...);
}
return conexao;
}
public static void fechaConexao() {
conexao.close();
conexao = null;
}
[...]
No trecho acima, se uma conexão ainda não tiver sido criada, então ele cria e retorna ela... Mas caso já existir alguma conexão, então ele simplesmente retorna a conexão existente, sem criar uma outra... Com estes patterns você vai economizar recursos do sistema, como o numero de conexões abertas simultâneamente... etc... etc... Quando precisar fechar a conexão, basta chamar o método "fechaConexao();".
Esta é a forma recomendada pela arquitetura... mas, como disse anteriormente, se for uma conexão que não será solicitada de forma permanente, talvez não seja necessário manter uma conexão aberta.... Mas, se for uma aplicação de produção, você realmente deve usar a primeira solução.
(Obs: Usando EJB você fica livre deste tipo de preocupação, procure informações sobre EJBs e o pattern DAO).
Grande abraço,
Até.