Help hibernate

3 respostas
fabioebner

Pessoal estou com um problema… comecei a mexer com hibernate. .dai fiz o seguinte exemplo

Artigos.java

package cadastro;
public class Artigos {
    
    private int codigo;
    private String assunto;
    private String conteudo;
    private int prioridade;

    public String getAssunto() {
        return assunto;
    }

    public int getCodigo() {
        return codigo;
    }

    public String getConteudo() {
        return conteudo;
    }

    public int getPrioridade() {
        return prioridade;
    }

    public void setAssunto(String assunto) {
        this.assunto = assunto;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public void setConteudo(String conteudo) {
        this.conteudo = conteudo;
    }

    public void setPrioridade(int prioridade) {
        this.prioridade = prioridade;
    }

Artigos.hbm.XML

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="cadastro.Artigos" table="ARTIGOS">
        <id name="codigo">
            <generator class="native"/>
        </id>
        <property name="assunto"/>
        <property name="conteudo"/>
        <property name="prioridade"/>
    </class>
</hibernate-mapping>

ArtigosDAO.JAVA

package cadastro;

import org.hibernate.Session;
public class ArtigosDAO {
     

     public void insert(Artigos artigo) throws Exception{
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        session.save(artigo);
        session.getTransaction().commit();
    }
    
}

HibernateUtil.java

package cadastro;

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

public class HibernateUtil {
    
    private static final SessionFactory sessionFactory;
    static {
        try {

            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }    
}

Hibernate.properties

# Sample ResourceBundle properties file
hibernate.dialect=net.sf.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://10.0.0.111:5432/db_hibernate
hibernate.connection.username = dna
hibernate.connection.password = dna44100

log4j.properties

# Sample ResourceBundle properties file
log4j.rootLogger=DEBUG, dest1

log4j.appender.dest1=org.apache.log4j.ConsoleAppender
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout
log4j.appender.dest1.layout.ConversionPattern=%d %-5p %-5c{3} %x -> %m%n

#log4j.appender.dest2=org.apache.log4j.RollingFileAppender
#log4j.appender.dest2.File=bridge.log

#log4j.appender.dest2.MaxFileSize=100KB
# Keep one backup file
#log4j.appender.dest2.MaxBackupIndex=3

#log4j.appender.dest2.layout=org.apache.log4j.PatternLayout
#log4j.appender.dest2.layout.ConversionPattern=%d [%t] %-5p %-5c{3}(%L) %x -> %m%n

hibernate.cfg.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="connection.url">jdbc:postgresql://10.0.0.111:5432/db_hibernate</property>
        <property name="connection.username">dna</property>
        <property name="connection.password">dna44100</property>
        
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</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">create</property>
        
        <mapping resource="cadastro/Artigos.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

Main.java

package cadastro;

public class Main {

    
    public static void main(String[] args) {
        // TODO code application logic here
        ArtigosDAO dao = new ArtigosDAO();
        
        Artigos artigo = new Artigos();
        artigo.setAssunto("aeeeee");
        artigo.setConteudo("esse eo  cara");
        artigo.setPrioridade(2);
        try {
       
            dao.insert(artigo);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
    }
    
}

utilizo netbeans e a estrutura de diretorio esta assim
dentro do pacote CADASTRO estao todas as classes menos o hibernate.cfg.xml q nao esta em nenhum pacote( esta um diretorio antes )

e recebo o seguinte erro:

<blockquote>log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).

log4j:WARN Please initialize the log4j system properly.

Initial SessionFactory creation failed.org.hibernate.MappingException: invalid configuration

Exception in thread main java.lang.ExceptionInInitializerError

at cadastro.HibernateUtil.(HibernateUtil.java:29)

at cadastro.ArtigosDAO.insert(ArtigosDAO.java:22)

at cadastro.Main.main(Main.java:35)

Caused by: org.hibernate.MappingException: invalid configuration

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

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

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

at cadastro.HibernateUtil.(HibernateUtil.java:25)

 2 more

Caused by: org.xml.sax.SAXParseException: Document root element hibernate-configuration, must match DOCTYPE root hibernate-mapping.

at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)

at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)

at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)

at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)

at org.apache.xerces.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source)

at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)

at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)

at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)

at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)

at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)

at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)

at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)

at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)

at org.dom4j.io.SAXReader.read(SAXReader.java:465)

at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1408)

 5 more

Java Result: 1

debug:

BUILD SUCCESSFUL (total time: 2 seconds)

</blockquote>

alguem sabe me dizer o pq???

obrigado

3 Respostas

doncopal

o erro está no DOCTYPE

o correto seria:

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
F

Pegue esse como exemplo (Está funcionando perfeitamente)

org.postgresql.Driver jdbc:postgresql://localhost:5432/banco usuario senha org.hibernate.dialect.PostgreSQLDialect
<property name="show_sql">true</property>
    
    <!-- Hibernate XML mapping files -->
    <mapping resource="SiaproPadrao/modelo/GrupoUsuario.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/Usuario.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/Acao.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/CategoriaProfissional.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/Funcao.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/Funcionario.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/ComponenteCusto.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/FichaDiariaCentroCusto.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/Status.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/TipoFuncionario.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/FdccFunc.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/FdccCompc.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/AutoRelCompc.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/GES.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/Meta.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/MetaCompc.hbm.xml"/>
    <mapping resource="SiaproPadrao/modelo/NivelCompc.hbm.xml"/>
    
    <!-- Hibernate Annotations (and package-info.java)
    <mapping package="org.mypackage"/>
    <mapping class="org.MyClass/>
    -->
   
</session-factory>
3rd_child

Olá fabioebner!

tenho pouca experiencia com hibernate, mas vi q vc está utilizando o hibernate.properties e hibernate.cfg.xml com as configurações do banco. Tente utilizar somente um desses dois, pois qdo tive q usar, usei somente o hibernate.properties.

espero ter ajudado.

abraços!

Criado 27 de outubro de 2006
Ultima resposta 27 de out. de 2006
Respostas 3
Participantes 4