| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 20:17:53
|
maruero
JavaTeenager
![[Avatar]](/images/avatar/b252e54edce965ac4408effd7ce41fb7.jpg)
Membro desde: 21/08/2006 12:01:38
Mensagens: 174
Localização: Barueri
Offline
|
É vc não está vendo errado! É mais um perguntando sobre o porque de se usar Class.forName( ).
Mas minha pergunta é por que eu tenho que fazer isso?
E não posso instanciar um objeto do tipo com.mysql.jdbc.Driver?
Eu queria esclarecer essa idéia......se for uma explicação lá de baixo mesmo (a base da coisa mesmo), é ainda melhor.
Desde já agradeço.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 21:20:46
|
rodrigo_corinthians
JavaEvangelist
Membro desde: 07/06/2005 12:01:01
Mensagens: 316
Offline
|
Essa sua dúvida é bastante interessante...
Paulo Silveira escreveu...
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).
Bom creio que o texto acima responde a sua dúvida, segue link com o restante do artigo.
http://www.guj.com.br/java.tutorial.artigo.7.1.guj
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 21:45:47
|
Henrik
JavaChild
Membro desde: 26/03/2006 22:06:12
Mensagens: 100
Offline
|
eu sempre tive essa duvida...
o artigo nao explica (ou pelo menos nao entendi) pq agente nao pode fazer
e tem que carregar em tempo de execução
errr...
This message was edited 1 time. Last update was at 09/09/2007 21:46:28
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2007 23:56:05
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
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.
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/09/2007 00:04:26
|
Humbertim2
JavaChild
![[Avatar]](/images/avatar/9b559e998150214661f26a1ced740688.jpg)
Membro desde: 31/01/2007 22:04:03
Mensagens: 115
Localização: São Paulo
Offline
|
vc poderia fazer isso... se antes fizesse isto...
desculpe possiveis erros... tentei fazer sem consultar nada...
This message was edited 1 time. Last update was at 10/09/2007 00:10:23
|
A modéstia, quando excessiva, é como o vento que apaga o archote cegando o viadante nas trevas de uma noite interminável.
Para que possa o homem vencer os múltiplos obstáculos que se lhe deparam na vida, precisa ter o espírito preso às raízes de uma ambição que o impulsione a um ideal qualquer.
O homem que calculava |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/09/2007 08:16:42
|
Foxlol
Virtual Machine Man
![[Avatar]](/images/avatar/8ca696ca160520b1cf5a569b4be525e8.jpg)
Membro desde: 02/05/2006 10:17:47
Mensagens: 646
Localização: São José do Rio Pardo - SP
Offline
|
Maurício Linhares wrote: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.
Muito bem colocado.
Vc poderia utilizar apenas:
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.
Abraço.
|
Sun Certified Java Programmer
Sun Certified Web Component Developer
Java EE 5 Business Component Developer Oracle Certified Professional |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/09/2007 14:50:42
|
dh-00
HelloWorld
Membro desde: 17/08/2006 16:16:52
Mensagens: 14
Offline
|
Também sempre tive outra duvida.
Por que se inicio a Class.forName(""), sempre acabo tendo que usar os métodos java de sql e nao os da classe importada?
Quando tento usar por exemplo um stm do mysql, ele me diz que é incompatível.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/09/2007 20:31:15
|
maruero
JavaTeenager
![[Avatar]](/images/avatar/b252e54edce965ac4408effd7ce41fb7.jpg)
Membro desde: 21/08/2006 12:01:38
Mensagens: 174
Localização: Barueri
Offline
|
Valew ai galera........
......sempre o forum respondendo minhas dores de cabeça!
Valew!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/09/2007 10:46:11
|
marcelo_mococa
Virtual Machine Man
![[Avatar]](/images/avatar/90248d0a98105fa534cf2b0696ddd12f.jpg)
Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline
|
Vale ressaltar que se você estiver usando JDBC 4 (Java 6), não é necessário registrar o Driver com o famoso "Class.forName".
Se o Driver estiver no classpath, o DriverManager registra pra você.
e viva o Java 6
This message was edited 1 time. Last update was at 11/09/2007 10:47:17
|
Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/09/2007 11:53:40
|
saulocamposi
Entusiasta Java
Membro desde: 11/09/2007 09:30:53
Mensagens: 20
Offline
|
eu aprendi de duas formas com o:
Class.forName("com.mysql.jdbc.Driver");
e dessa forma:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
connection = DriverManager.getConnection("jdbc:mysql://"+host+"/"+database,user, password);
me disseram que essa última era melhor e mais nova
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 10:44:55
|
fvslistas
JavaGuru
Membro desde: 26/08/2009 17:31:26
Mensagens: 231
Offline
|
Não é nova não.
Está lá desde o 1.4
http://java.sun.com/j2se/1.4.2/docs/api/index.html
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2012 09:09:32
|
Ravnus
JavaBaby
![[Avatar]](/images/avatar/d18d162b77b4dc101430d0c28b7196c5.jpg)
Membro desde: 22/10/2010 10:55:56
Mensagens: 83
Localização: Brasília, DF
Offline
|
.........................................................
This message was edited 7 times. Last update was at 19/05/2012 11:08:43
|
Domício Medeiros
Usuário Linux |
|
|
 |
|
|