Configuração do Hibernate.cfg.xml

2 respostas
F

Alguem poderia me ajudar… surgiu este seguinte erro… dizendo q não encontra o arquivo hibernate.cfg.xml
segue abaixo.

init:

deps-jar:

Compiling 1 source file to /home/fernanda.ferreira/MiniCursoHibernatePratica/build/classes

compile:

run-management:

Connecting JConsole

Found manageable process, connecting JConsole to process

2008-06-17 08:53:47,031 INFO  hibernate.cfg.Environment  -> Hibernate 3.2.6

2008-06-17 08:53:47,092 INFO  hibernate.cfg.Environment  -> hibernate.properties not found

2008-06-17 08:53:47,203 INFO  hibernate.cfg.Environment  -> Bytecode provider name : cglib

2008-06-17 08:53:47,263 INFO  hibernate.cfg.Environment  -> using JDK 1.4 java.sql.Timestamp handling

2008-06-17 08:53:48,041 INFO  hibernate.cfg.Configuration  -> configuring from resource: hibernate.cfg.xml

2008-06-17 08:53:48,046 INFO  hibernate.cfg.Configuration  -> Configuration resource: hibernate.cfg.xml

Exception in thread main org.hibernate.HibernateException: hibernate.cfg.xml not found

at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:147)

at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1411)

at org.hibernate.cfg.Configuration.configure(Configuration.java:1433)

at HibernateConfiguracao.criaSessionFactory(HibernateConfiguracao.java:37)

at FactoryClasses.criarDAOFactory(FactoryClasses.java:25)

at AplicacaoTexto.main(AplicacaoTexto.java:28)

Java Result: 1

BUILD SUCCESSFUL (total time: 15 seconds)

e logo mais os arquivos:

<?xml version="1.0" encoding="UTF-8"?> org.postgresql.Driver postgrees jdbc:postgresql://172.16.129.8:5435/minicursohibernatepratica postgres org.hibernate.dialect.PostgreSQLDialect
import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class HibernateConfiguracao{

private static SessionFactory sessionFactory;

public HibernateConfiguracao() {

super();

}
public Session openSession(){
  if(sessionFactory != null){
    return sessionFactory.openSession();
  }else{
         return null;
  }
}

public void criaSessionFactory(String arquivoHibernate){
  if(sessionFactory == null){
    Configuration configuration = new Configuration();
    configuration.configure(arquivoHibernate);   /**** marca aqui o erro ****/
    sessionFactory = configuration.buildSessionFactory();
  }
}

}


public class FactoryClasses {

public static final int POSTGRESQL = 0;

 public static DAOFactory criarDAOFactory(int i){
 switch(i){
 case POSTGRESQL:
 default:
 String cfg = "hibernate.cfg.xml";
 HibernateConfiguracao Configuracao = new HibernateConfiguracao();
 Configuracao.criaSessionFactory(cfg);     /**** marca aqui o erro ****/
 return new HibernateDAOFactory();
}

}
}


import java.util.List;

import javax.swing.JOptionPane;

import org.hibernate.HibernateException;

public class AplicacaoTexto {

public AplicacaoTexto() {
}
public static void main(String[] args) {
   //Uma instância de factory que será a nossa 'Fabrica de Classes'
   DAOFactory factory = FactoryClasses.criarDAOFactory(FactoryClasses.POSTGRESQL); /**** marca aqui o erro ****/

   //Uma instância do DAO que contém os metodos responsavéis de 
   //gravação, leitura e exclusão dos dados persistentes
   FuncionarioHibernateDAO funcionarioHibernateDAO = new FuncionarioHibernateDAO();

   //Funcionario que será persistido
   Funcionario funcionario = new Funcionario();

   //Funcionario que será excluido
   Funcionario func = new Funcionario();

   //instanciar um novo funcionario e persistir no banco
   funcionario.setId(101);
   funcionario.setNome("Joana");
   funcionario.setCargo("Atendente Telemarketing");
   funcionario.setSalario(432.21);
   funcionario.setHorasExtras(0);

   try{
       funcionarioHibernateDAO.gravar(funcionario);
   }catch(HibernateException e){
      System.out.println("Não foi persistido!");
      e.printStackTrace();
   }

   //listar todos os funcionários
   try{
        List<Funcionario> listFuncionario;
        listFuncionario = funcionarioHibernateDAO.carregarTudoOrdenadoNome();

        System.out.println("Todos os Funcionarios ordenados por nome:");
        for(Funcionario funcList: listFuncionario){
           System.out.println("---------------------");
           System.out.println("Id...........: "+func.getId());
           System.out.println("Nome.........: "+func.getNome());
           System.out.println("Cargo........: "+func.getCargo());
           System.out.println("Salario......: "+func.getSalario());
           System.out.println("Horas Extras.: "+func.getHorasExtras());
        }
   }catch(HibernateException e){
          System.out.println("Não foi possivel recuperar todos os funcionários!");
          e.printStackTrace();
   }

   //carregar apenas os dados de um funcionario
   try{
       String nome = JOptionPane.showInputDialog(null,"Informe o nome: ");
       func = funcionarioHibernateDAO.carregarUm(nome);
       if(func != null){
           System.out.println("Funcionário Encontrado!");
           System.out.println("-----------------------");
           System.out.println("Id...................: "+func.getId());
           System.out.println("Nome.................: "+func.getNome());
           System.out.println("Cargo................: "+func.getCargo());
           System.out.println("Salario..............: "+func.getSalario());
           System.out.println("Horas Extras.........: "+func.getHorasExtras());
       }
   }catch(HibernateException e){
          System.out.println("Não foi possivel recuperar os dados do funcionario!");
          e.printStackTrace();
   }

   //para excluir o funcionario recuperado anteriormente
   try{
        funcionarioHibernateDAO.excluir(func);
   }catch(HibernateException e){
          System.out.println("Não foi possivel excluir o funcionario!");
          e.printStackTrace();
   }
}

}

2 Respostas

R

Texto acima retirado daqui: http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html#tutorial-firstapp-configuration

ou seja, pode colocar ele na raiz de seu fonte (package default).

F
<?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>

        <!-- Database connection settings -->
        <property name="connection.driver_class">driver JDBC</property>
        <property name="connection.url">jdbc:sgbd:ip:porta:nomeBanco</property>
        <property name="connection.username">user</property>
        <property name="connection.password">password</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">dialeto do JDBC</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <!--property name="hbm2ddl.auto">update</property-->

        <mapping resource="localizaçãoHbm"/>

    </session-factory>

</hibernate-configuration>

esse é o padrão do hibernate.cfg, vc deve colocá-lo na raiz do projeto (default packet).

No hibernateUtil, onde crio as sessions eu costumo fazer assim:

import org.apache.log4j.Logger;
import org.hibernate.FlushMode;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    static Logger log = Logger.getLogger(HibernateUtil.class);
    public static final SessionFactory sessionFactory;
    public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
    
    static {
        try {
            Configuration cfg = new Configuration().configure();
            sessionFactory = cfg.buildSessionFactory();
        } catch (Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }
    
    public static Session getCurrentSession() throws HibernateException {
        if (session.get() == null) session.set(sessionFactory.openSession());
        return session.get();
    }
    
    public static void closeSession() throws HibernateException {
        Session s = session.get();
        if (s != null) s.close();
        session.set(null);
        clearSession();
    }
    
    public static void clearSession() throws HibernateException {
        if (session.get() != null) session.get().clear();
    }
    
    public static void save(Object what) {
        HibernateUtil.clearSession();
        Transaction t = HibernateUtil.getCurrentSession().beginTransaction();
        try {
            HibernateUtil.getCurrentSession().saveOrUpdate(what);
        } catch (Exception e) {
            HibernateUtil.getCurrentSession().merge(what);
        }
        t.commit();
    }
}

ai pra salvar é só chamar

HibernateUtil.save(funcionario)

dá uma estudada ai, sucesso

Criado 17 de junho de 2008
Ultima resposta 17 de jun. de 2008
Respostas 2
Participantes 3