Paulo Silveira escreveu…[quote]Porém, precisamos antes “carregar” o driver, de tal maneira que o Java saiba que ele existe, e possa usá-lo se necessário. Normalmente, os livros explicam isto de forma muito básica, e não entram em detalhes, já que o código que carrega o driver é do tipo:
Class.forName(“com.mysql.jdbc.Driver”);
Mas o que acontece realmente aqui? Quando você utiliza o método estático Class.forName(), o Class Loader tenta inicializar esta classe. Esta classe (que é o nosso driver jdbc) possui um bloco inicializador estático (não se preocupe caso você não conheça este recurso), que irá registrar essa classe como um driver JDBC, avisando o java.sql.DriverManager, pelo método registerDriver.
Obs: Existem outras maneiras de carregar o driver, como por linha de comando (bootstrap).[/quote]
Bom creio que o texto acima responde a sua dúvida, segue link com o restante do artigo.
Ambos vão ter o mesmo efeito, o problema desse seu exemplo aí é que você está se amarrando diretamente ao driver do MySQL, no exemplo com o Class.forName("") o que é passado é uma String que pode ser facilmente colocada em um arquivo de configuração qualquer e alterada se for necessário.
// imports aqui
public class ConnectionFactory {
public static Connection getConnection() throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");
return
DriverManager.getConnection("jdbc:mysql://localhost/bd","root","root");
} catch (ClassNotFoundException e) {
throw new SQLException(e.getMessage());
}
}
}
public class Driver {
// a conexão com o banco de dados
private Connection connection;
public Driver() throws SQLException {
this.connection = ConnectionFactory.getConnection();
}
}
desculpe possiveis erros… tentei fazer sem consultar nada…
[quote=Maurício Linhares]Ora, e quem disse que não pode?
Ambos vão ter o mesmo efeito, o problema desse seu exemplo aí é que você está se amarrando diretamente ao driver do MySQL, no exemplo com o Class.forName("") o que é passado é uma String que pode ser facilmente colocada em um arquivo de configuração qualquer e alterada se for necessário.[/quote]
Muito bem colocado.
Vc poderia utilizar apenas:
new Driver();
Que iria funcionar normalmente, mas como o Maurício disse, vc ficaria amarrado ao driver do MySQL.
Como a parte de configuração do banco de dados geralmente é atrelada a arquivos properties para permitir um menor acoplamento do sistema, é aconselhável a carregar o Driver pelo Class Loader.
O grande lance do Class.forName é poder trocar de um Driver para o outro sem ter de alterar o código fonte.
Com um código bem escrito, a troca de um driver para outro pode ser feita alterando apenas um parâmtero que é passado para o programa. Exemplo: um arquivo .properties.