Hibernate 3, ainda lutando com o "alo mundo" - onde está o driver?

4 respostas
J

Pessoal,
Estou tentando fazer o meu exemplo funcionar de qualquer maneira. Resolvi apelar para a configuração programática. O exemplo ficou assim:

public class InserirProduto
{
    public static void main(String[] args)
    {
        //um produto qualquer
        Produto p = new Produto();
        p.setNome("arroz");
        p.setPreco(1.45);
        p.setQuantidade(100);
        
        //inicialização do hibernate
        Configuration cfg = new Configuration().addClass(Produto.class);
        
        cfg.setProperty("hibernate.connection.driver_class", "org.gjt.mm.mysql.Driver");
        cfg.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");
        cfg.setProperty("hibernate.connection.url", "jdbc\:mysql\://localhost/testehiber");
        cfg.setProperty("hibernate.connection.username", "testehiber");
        cfg.setProperty("hibernate.connection.password", "testehiber");
        
        SessionFactory sf = cfg.buildSessionFactory();
        Session sess = sf.openSession();
        
        //gravação do produto no banco
        Transaction t = sess.beginTransaction();
        sess.save(p);
        t.commit();
        
        //fechamento da sessão
        sess.close();
    }    
}

E a msg de erro do netbeans é:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.exception.GenericJDBCException: Cannot open connection
        at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
        at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
        at org.hibernate.jdbc.AbstractBatcher.openConnection(AbstractBatcher.java:413)
        at org.hibernate.jdbc.JDBCContext.connect(JDBCContext.java:141)
        at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:88)
        at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:49)
        at org.hibernate.transaction.JDBCTransactionFactory.beginTransaction(JDBCTransactionFactory.java:19)
        at org.hibernate.jdbc.JDBCContext.beginTransaction(JDBCContext.java:204)
        at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1014)
        at InserirProduto.main(InserirProduto.java:34)
Caused by: java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(DriverManager.java:532)
        at java.sql.DriverManager.getConnection(DriverManager.java:140)
        at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
        at org.hibernate.jdbc.AbstractBatcher.openConnection(AbstractBatcher.java:410)
        ... 7 more
Exception in thread "main"

Antes que alguém pergunte: sim, eu coloquei o driver no classpath: copiei-o no diretório da aplicação, montei o jar (netbeans 3.6) e por via das dúvidas tb configurei o danado no runtime do netbeans (depois de ter tentando sem isso).
Estou começando a desconfiar que fazer o mapeamento O/R na mão dá menos trabalho… pelo menos funciona…
:frowning:
Já tentei tb colocar o dialect como MySQLDialect puro, mas não funcionou tb.
Sugestões para sair desse enrosco?

4 Respostas

Rafael_Steil

Bom, inicialmente, mude o nome do driver de “org.gjt.mm.mysql.Driver” para “com.mysql.jdbc.Driver”. O primeiro eh a versao antiiiiiiiiiiiiiiiiga.

Em segundo lugar, teste rodar por fora do Netbeans, simplesmente para ver se funciona. Apos compilar, vao no diretorio onde o .class esta e digite

java -cp .;c:\path\para\o\mysql-xxx.jar InserirProduto

Rafael

J

Rafael Steil:
Bom, inicialmente, mude o nome do driver de “org.gjt.mm.mysql.Driver” para “com.mysql.jdbc.Driver”. O primeiro eh a versao antiiiiiiiiiiiiiiiiga.

Rafael,
não entendi essa de antiga, baixei hoje do próprio site do mysql esse driver a última versão, e o nome do driver continua sendo o mesmo que vc chamou de antigo(capturado pelo próprio netbeans…)
Fiz uma migração para o Netbeans 4, e depois de alguns ajustes, funcionou somente com configuração ‘programática’. Ou seja, não estou conseguindo enxergar o hibernate.cfg.xml…
Obrigada,

Rafael_Steil

De “antigo” eu me referia ao nome do driver. “org.gjt.mm.mysql.Driver” eh o nome original, antes da MySQL AB contratar o criador do driver, que entao passou a ser referenciado pelo nome “com.mysql.jdbc.Driver”. O nome anterior (org.gjt.mm.mysql.Driver) eh mantido por questoes de compatbilidade apenas - no fundo, ele aponta para a versao correta, entao usar um nome ou outro vai dar na mesma, embora a forma “com.mysql.jdbc.Driver” eh a mais recomendada, por questoes de padronizacao.

Rafael

J

Ahhhhhhh.
Obrigada mesmo pela explicação. O netbeans “captura” o nome antigo, por isso eu estava usando esse.
Valeussss :smiley:
Agora estou a caça do hibernate.cfg… :?

Criado 10 de abril de 2005
Ultima resposta 12 de abr. de 2005
Respostas 4
Participantes 2