[RESOLVIDO] HIBERNATE - sessionFactory não inicializada

Boa noite a todos,

estou com um problema quando tento persistir um objeto no banco de dados…
pelo que estou vendo meu session não está sendo preenchido com a sessionFactory(está retornando nulo) ,
por favor… Alguem pode me ajudar???
seguem as Classes…

package br.com.locadora.persistence;


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


public class HibernateUtil {
    private static final SessionFactory sessionFactory;

    static {
        try {
            
            sessionFactory = new AnnotationConfiguration().configure("br/com/locadora/config/mysql_hibernate.cfg.xml").buildSessionFactory();
        } catch (Throwable ex) {
            
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex); // ele está caindo no catch (não está preenchendo o sessionFactory)
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory; //esta retornando nullo 
    }
}

@Override public void save(E entity) throws Exception { session = HibernateUtil.getSessionFactory().openSession(); // não estou conseguindo abrir a sessao... (sessionFactory nulo) transaction = session.beginTransaction(); session.save(entity); transaction.commit(); session.close(); }

[code]public class Cadastro {

public static void main(String[] args) {
	
	Cadastro c = new Cadastro();
	
	c.cadastraCategorias();

}

public void cadastraCategorias(){
	
	try {
		
		
		
	
	String categorias[] = {"acao","aventura","terror"};
	Categoria categoria = null;
	GenericDaoHibernate<Categoria, Integer> cd = new CategoriaDao();

	for(int i = 0; i<3;i++){
		categoria = new Categoria();
		categoria.setDescricao(categorias[i]);
		cd.save(categoria);  //chamo o metodo save de GenericDaoHibernate instanciando sua subclasse Categoria...
		System.out.println("Categoria Salva");
	}

	} catch (Exception e) {
		System.out.println("erro" + e.getMessage());
		e.printStackTrace();
	}
	
}

}
[/code]

[code]public class HibernateUtil {
private static SessionFactory buildSessionFactory() {
try {

        AnnotationConfiguration cfg = new AnnotationConfiguration();
           cfg.configure("br/com/locadora/config/mysql_hibernate.cfg.xml");
            return cfg.buildSessionFactory();
    } catch (Throwable ex) {  
                  System.out.println("SessionFactory falhou " + ex);  
        throw new ExceptionInInitializerError(ex);
    }  
}  

[/code]

Você nao declarou antes a sessao e transaction

@Override  
        public void save(E entity) throws Exception {  
              Session sessao= null;
               Transaction transaction  = null;
        try{
             sessao= HibernateUtil.getSessionFactory().openSession();
             transaction = session.beginTransaction();   
             sessao.save(entity);  
             transaction.commit();  
     }catch(HibernateException ex){
             sysout("Nao foi possível inserir + " ex.getMessage());
    } finally{
    try{
        sessao.close();
 }  catch(Throwable e)
{
        sysout("Erro ao fechar" + e.getMessage());
}
}

Verifica se o cfg está realmente no local indicado ou verifica se o seu xml está correto, se estiver usando o netbeans você pode fazer isso clicando com o botão direito do mouse dentro do xml, depois clica em verificar xml, ou validar xml.

Abraços.

Fica com DEUS.

Então Jardel.ads, declarei o session e o transaction sim… Só que em uma classe abstrata.

public abstract class GenericDaoHibernate<E, ID extends Serializable> implements GenericDao<E, ID>  {

	
	protected Session session;
	protected Transaction transaction;
	protected Criteria criteria;
	protected Query query;
	
	private Class<E> entity;
	
	public GenericDaoHibernate(Class<E> entity) {
		this.entity = entity;
	}

	@Override
	public void save(E entity) throws Exception {
		session = HibernateUtil.getSessionFactory().openSession();
		transaction = session.beginTransaction();
		session.save(entity);
		transaction.commit();
		session.close();
	}

	@Override
	public void delete(E entity) throws Exception {
		session = HibernateUtil.getSessionFactory().openSession();
		transaction = session.beginTransaction();
		session.delete(entity);
		transaction.commit();
		session.close();
		
	}

	@Override
	public void update(E entity) throws Exception {
		session = HibernateUtil.getSessionFactory().openSession();
		transaction = session.beginTransaction();
		session.update(entity);
		transaction.commit();
		session.close();
		
	}

	@SuppressWarnings("unchecked")
	@Override
	public E findById(ID key) throws Exception {
		session = HibernateUtil.getSessionFactory().openSession();
		return (E) session.get(entity, key);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<E> findAll() throws Exception {
		session = HibernateUtil.getSessionFactory().openSession();
		criteria = session.createCriteria(entity);
		return criteria.list();
	}
	
	
}

Caro Fexx, ele esta encontrando o arquivo xml, não está apontando erro de diretório não, enquanto o próprio, eu creio que esta correto… Mas vou posta-lo para melhor entendimento …

[code]<?xml version="1.0" encoding="UTF-8"?>

org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/projeto_locadora root coti true true
    <mapping class="br.com.locadora.entity.Categoria"/>    
    <mapping class="br.com.locadora.entity.Cliente"/>
    <mapping class="br.com.locadora.entity.Endereco"/>
    <mapping class="br.com.locadora.entity.Filme"/>
    <mapping class="br.com.locadora.entity.Locacao"/>
    <mapping class="br.com.locadora.entity.Midia"/>
[/code]

E Agora… A tela da morte… rs

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). log4j:WARN Please initialize the log4j system properly. Initial SessionFactory creation failed.java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V Exception in thread "main" java.lang.ExceptionInInitializerError at br.com.locadora.persistence.HibernateUtil.<clinit>(HibernateUtil.java:19) at br.com.locadora.persistence.GenericDaoHibernate.save(GenericDaoHibernate.java:28) at br.com.locadora.persistence.Cadastro.cadastraCategorias(Cadastro.java:29) at br.com.locadora.persistence.Cadastro.main(Cadastro.java:11) Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47) at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30) at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24) at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216) at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145) at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117) at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108) at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104) at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69) at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:107) at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43) at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162) at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:135) at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55) at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56) at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:269) at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:425) at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109) at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1291) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915) at br.com.locadora.persistence.HibernateUtil.<clinit>(HibernateUtil.java:15) ... 3 more

Se o jar do log4j estiver em seu classpath, verifica se a importação de alguma entidade está diferente disso:
import javax.persistence.Entity;

Sim meu amigo, as importações nas entidades estão tudo javax.persistence.*, tanto que gerei as tabelas pelo própio Hibernate, com as annotations… enfim…

Cara se não for o jar, essa mensagem normalmente aparece porque não tem o log4j.properties

Então , meu jar está legal para utilizar o Hibernate 3.5, agora, realmente não tenho esse arquivo log4j.properties mesmo não…

Normalmente esse WARN senão for o jar é o arquivos log4j.properties.

Aquele problema de não estar reconhecendo o log4j.properties , já está safo,
mas to dando uma pesquisada e to descobrindo que o problema é com as libs mesmo…

nitial SessionFactory creation failed.java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V Exception in thread "main" java.lang.ExceptionInInitializerError at br.com.locadora.persistence.HibernateUtil.<clinit>(HibernateUtil.java:19) at br.com.locadora.persistence.Teste.main(Teste.java:10) Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)

vou ver o que faço…

[quote=jlsilva]Aquele problema de não estar reconhecendo o log4j.properties , já está safo,
mas to dando uma pesquisada e to descobrindo que o problema é com as libs mesmo…

nitial SessionFactory creation failed.java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V Exception in thread "main" java.lang.ExceptionInInitializerError at br.com.locadora.persistence.HibernateUtil.<clinit>(HibernateUtil.java:19) at br.com.locadora.persistence.Teste.main(Teste.java:10) Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)

vou ver o que faço…[/quote]

Ok cara, boa sorte.

Abraços.

Fica com DEUS.

jlsilva

se já resolveu o problema, edita teu tópico e coloca como [RESOLVIDO]

Amigos, acabei de resolver… O problema era com 1 lib… Apenas uma libzinha… rs . Abraços.

qual lib!?