Conexão Hibernate

2 respostas
ressacaafu

E aí galera. Estou seguindo um tutorial do YouTube e estou tendo problemas ao tentar conectar ao banco com o Hibernate. Seguem as minhas classes:

package com.kurtphpr.sistema.vendas;

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

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 (Throwable e) {
		System.out.println("Deu pau!\n" + e);
		throw new ExceptionInInitializerError();
	}
}

public static SessionFactory getSession() {
	return session;
}
}

//////////////////////////////////////////////////////////////////////////////////

import org.hibernate.Session;

import com.kurtphpr.sistema.vendas.HibernateUtil;

public class Conecta {

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

}

e o erro que estou tendo:
Deu pau!
java.lang.NoClassDefFoundError: javax/transaction/SystemException
Exception in thread “main” java.lang.NullPointerException
at Conecta.main(Conecta.java:14)

2 Respostas

Rodrigos_Bragas

Olá, Eu nunca tentei conectar com o Hibernate por uma classe. Normalmente eu uso classe para conectar com o banco é quando vou usar JDBC puro. Se resolver para você, você pode é criar um arquivo com o nome persistence.xml, dentro da pasta src/META-INF, com a seguinte configuração:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
	http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" >
	<persistence-unit name="nome_do_persistence" transaction-type="RESOURCE_LOCAL" >
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/nome_do_banco" />
			<property name="javax.persistence.jdbc.user" value="usuario_do_banco" /><!-- Normalmente é root -->
			<property name="javax.persistence.jdbc.password" value="senha_do_banco" />
		</properties>
	</persistence-unit>
</persistence>

Depois é só chamar no EntityManagerFactory:

EntityManagerFactory factory=Persistence.createEntityManagerFactory("nome_do_persistence");// Normalmente o nome do persistence é o mesmo do banco
// Mas que deve ser definido no arquivo persistence.xml

E pronto, você já esta conectado.
Esse exemplo é com mysql, se for outro banco, você deve mudar o nome e driver
Você deve usar JPA

ressacaafu

Não sei por que, com o Hibernate 5 não funcionou. Mas com as biliotecas do Hibernate 3 funcionou.

Criado 17 de dezembro de 2015
Ultima resposta 20 de dez. de 2015
Respostas 2
Participantes 2