Hibernate e MySQL - seguindo a apostila da Caelum

3 respostas
Metallica

Olá,

estou seguindo aquela apostila gratuita da Caelum FJ21, no capítulo de Hibernate, mas mesmo seguindo exatamente os passos deles, estou tendo o seguinte erro: Cannot open connection

Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
        at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
        at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
        at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:94)
        at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:30)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2093)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2573)
        at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:47)
        at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
        at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
        at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)
        at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
        at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
        at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
        at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
        at br.util.Teste.main(Teste.java:16)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2120)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:154)
        at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
        at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
        ... 19 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:335)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2043)
        ... 32 more
Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at java.net.Socket.<init>(Socket.java:366)
        at java.net.Socket.<init>(Socket.java:209)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
        ... 33 more
Java Result: 1

O banco de dados, MySQL, está funcionando perfeitamente, quando conecto manualmente está certo (usuário e senha também).
Classes e arquivos de configuração idênticos ao do exemplo do Produto.

O que seria isso?

Obrigado

3 Respostas

watsonpassos

Boa noite amigo,

Isso pode ser tanto no seu código com Hibernate quando no Hibernate-config.xml.

Faz o seguinte, posta aqui o conteudo do hibertante-config.xml e o trecho de código que vc ta executando pra eu poder ver melhor o que pode ser. Eu acabei de fazer o FJ 21 na Caelum e ta fresquinho na cabeça. Posta ai pra gente.

Abraços!

Watson Passos

Vini_Fernandes

Cara, os erros podem estar em: senha, usuario, porta ou host. Porem eu ainda aposto que voce esta usando senha e/ou usuario errado!

Metallica

Claro pessoal, aqui está o hibernate.properties.

## define query language constants / function names

hibernate.query.substitutions yes 'Y', no 'N'

## MySQL

hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost/teste
hibernate.connection.username root
hibernate.connection.password  reeb

## format SQL in log and console

hibernate.format_sql true
hibernate.show_sql = true
O resto está tudo comentado, então nem postei. Hibernate config.xml eu não tenho, na apostila pelo menos não cita isso.

Classe que quando eu rodo dá o erro (única mudança é que fiz o bean ser de gatos em vez de produtos, gosto pessoal :D ):

package br.util;

import br.bean.Gato;
import br.dao.GatoDao;
import br.util.Sessao;
import org.hibernate.Session;

public class Teste {
     public static void main(String[] args) {
        Gato g = new Gato();
        g.setIdade(12);
        g.setNome("Tome");
        g.setPeso(7);
        g.setRaca("Persa");
              Session s = new Sessao().getInstance();
        s.save(g);
        s.close();
        
         
    }

}
Sessao:
package br.util;

import br.bean.Gato;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class Sessao {
    private static SessionFactory factory;
    
  
    static {
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.addAnnotatedClass(Gato.class);
        factory = cfg.buildSessionFactory();
    }
    
    public Session getInstance() {
        return factory.openSession();
    }
}
E essa classe que quando executo nada acontece no BD em si:
package br.dao;

import br.bean.Gato;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class CriaTabelaGato {
    public static void main(String[] args) {
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.addAnnotatedClass(Gato.class);
        new SchemaExport(cfg).create(true, false);
    }


}
Criado 10 de abril de 2009
Ultima resposta 12 de abr. de 2009
Respostas 3
Participantes 3