Problema na criação de tabelas com o Hibernate

9 respostas
jeovane.reges
Olá, boa noite a todos do GUJ. Estou iniciando os estudos no framework hibernate e estou tendo o seguinte problema abaixo quando mando gerar minha tabelas no BD.
org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.jeovane.sistema.cliente.Cliente"/>
Exception in thread "main" java.lang.NullPointerException
	at Conecta.main(Conecta.java:10)
Meu arquivo de mapeamento e conexão no banco é o seguinte abaixo
<hibernate-configuration>
 <session-factory name="">
  <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
  <property name="hibernate.connection.password">vertrigo</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost/sistemavendas</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <mapping class="com.jeovane.sistema.cliente.Cliente"/>
  <mapping class="com.jeovane.sistema.produto.Produto"/>
  <mapping class="com.jeovane.sistema.venda.Venda"/>
 </session-factory>
</hibernate-configuration>
A classe que executo para gerar as tabelas é a seguinte abaixo.
public class Conecta {
	public static void main(String[] args) {
		Session session = null;
		try {
			session = HibernateUtil.getSession().openSession();
			System.out.println("Conectou!");
		} finally{
			session.close();
			System.out.println("Fechou a conexão!");
		}
	}
}
E minha classe de configuração é a seguinte abaixo.
public class HibernateUtil {
	private static final SessionFactory session = buildSessionFactory();

	private static SessionFactory buildSessionFactory() {
		try {
			Configuration cfg = new Configuration();
			cfg.configure("hibernate.cfg.xml");
			return cfg.buildSessionFactory();
		} catch (Exception e) {
			System.out.println("Erro!\n" + e);
			throw new ExceptionInInitializerError();
		}
	}

	public static SessionFactory getSession() {
		return session;
	}
}
Alguém sabe me dizer aonde que estou errando? Desde de já obrigado pela ajuda de todos.

9 Respostas

R

Cara,

Você tem alguma nescessidade específica para criar as classes de modelo a partir da conexão?
Por que particulamente prefiro criar as classes atraves de New Entity Class from Database.

jeovane.reges

Não necessariamente, é apenas pra teste e agilizar a criação mesmo, além disso, estou iniciando. :confused:

wagnerfrancisco

Qual versão do Hibernate vc tá usando? Veja a mensagem:

Versões anteriores a, se não me engano, 3.6 precisam usar a classe AnnotationConfiguration ao invés da Configuration. Qual a sua versão?

jhaga

Já que está iniciando, siga a dica do colega rfogo.
Eu também prefiro “criar na mão”.
E também como o wagnerfrancisco disse, sempre tem umas “peculiaridades” de versão para versão 8)

GusMcCart

Se tiver usando Annotation nos seus POJO’s tem que usar a AnnotationConfiguration ao invés da classe Configuration no seu HibernateUtil… Caso esteja usando XML tanto faz…

jeovane.reges

A versão do hibernate é a 3.5.5-Final
É melhor usar uma mais recente ou o que?

wagnerfrancisco

Exato, como eu falei, antes da versão 3.6 você precisava usar AnnotationConfiguration.

Partindo da 3.6, pode usar direto a classe Configuration (como vc fez).

Baixe a versão mais recente, a 4.1. Estas classes vão estar deprecated, mas irão funcionar. Depois pesquise como fazer o setup na versão 4.

jeovane.reges

Opa, tá certo :slight_smile:
Obrigado wagnerfrancisco

L

cara vc ta declarando uma classe ao inves do xml no hibernate.

no teu hibernate.cfg.xml vc ta mapeando é a classe em si e não o xml que vc mesmo declarou, se na tua classe entidade não estão declarados os annotations vai dar errado, tente colocar o xml de mapeamento de classe no cfg do hibernate.

outra dica, também concordo com os colegas e acho que vc devia fazer as tabelas do banco na mão mesmo ao invés de usar hibernate.

Criado 19 de agosto de 2012
Ultima resposta 21 de ago. de 2012
Respostas 9
Participantes 6