Conexão com o Banco usando Hibernate

1 resposta
E

Elaborei as seguintes Classes:

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	private static final SessionFactory SessionFactory = buildSessionFactory();

	private static org.hibernate.SessionFactory buildSessionFactory() {
		try {
			AnnotationConfiguration cfg = new AnnotationConfiguration();
			cfg.configure("hibernate.cfg.xml");
			return cfg.buildSessionFactory();
		} catch (Throwable e) {
			System.out
					.println("Criação inicial de objeto SessionFactory falhou. Erro: "
							+ e);
			throw new ExceptionInInitializerError(e);
		}
	}
	public static SessionFactory getSessionFactory(){
		return SessionFactory;
	}

}
import org.hibernate.Session;

public class ConectaHibernateMySQL {

	public static void main(String[] args) {
		Session sessao = null;
		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			System.out.println("Conectou!");
		} finally {
			sessao.close();
		}
	}

}
Com a seguinte XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
  <session-factory>
  <!--  configuração da conexão com o banco MySql e dialeto -->
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="connection.url">jdbc:mysql://localhost/agenda</property>
  <property name="connection.username">root</property>
  <property name="connection.password">root</property>
  <property name="current_session_context_class">thread</property>
  
  <!--  Usando as configurações do C3PO para pool de conexões -->
  <property name="c3po.min_size">5</property>
  <property name="c3po.max_size">20</property>
  <property name="c3po.timeout">300</property>
  <property name="c3po.max_statements">50</property>
  <property name="c3po.idle_test_period">3000</property>
  
  <!-- configuracão de debug -->
  <property name="show_sql">true</property>
  <property name="format_sql">true</property>
  <property name="generate_statistics">true</property>
  <property name="use_sql_comments">true</property>  
  <!-- Mapeando classes -->
		<mapping resource="com/livro/capitulo3/crudxml/Contato.hbm.xml"/>	
		<mapping class="com.livro.capitulo3.crudannotations.ContatoAnnotations"/>
  </session-factory>
</hibernate-configuration>

No entanto, não estou conseguindo compilar com o resultado: Conectou!

No Console o resultado é esse:
40 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.2-Final
70 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.2-Final
70 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
80 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
90 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
342 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
352 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: hibernate.cfg.xml
352 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: hibernate.cfg.xml
Criação inicial de objeto SessionFactory falhou. Erro: org.hibernate.HibernateException: hibernate.cfg.xml not found
Exception in thread "main" java.lang.NullPointerException
	at com.livro.capitulo3.conexao.ConectaHibernateMySQL.main(ConectaHibernateMySQL.java:13)

[color=red]O que pode ser?[/color]

1 Resposta

R

Amigo segue a minha classe HibernateUtil:

public class HibernateUtil {
	 
    public static final SessionFactory session = buildSession();
 
    private static SessionFactory buildSession() {
 
    try{
         Configuration cfg = new Configuration();
                       cfg.configure("hibernate.cfg.xml");
 
        return cfg.buildSessionFactory();
 
       }catch(Throwable b){
 
            System.out.println("Não deu \n" + b);
            throw new ExceptionInInitializerError();
       }
   }
 
   public static SessionFactory getSessionFactory(){
       return session;
   }

Arquivo de configuração do Hibernate

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="">
  <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost/banco</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
  <property name="hibernate.show_sql">true</property>
  <property name="hibernate.format_sql">true</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <mapping class="pacote.classe"/>
  
 </session-factory>
</hibernate-configuration>

Classe que abre a conexão com o banco

public class Teste {

	/**
	 * @param args
	 */
	@SuppressWarnings("unused")
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Session sessao = HibernateUtil.getSessionFactory().openSession();
		
	}

}
Criado 30 de outubro de 2013
Ultima resposta 1 de nov. de 2013
Respostas 1
Participantes 2