Hibernate 3.0 - Erro no Mapeamento

Olá pessoal bom dia,

    Estou tendo dificuldade em executar um exemplo de como usar o Hibernate. Estou a 2 dias querendo executar um exemplo no hibernete.

    Meu banco e SQL Server 2005.

    DB:
    
    Tabela Cliente
    id - String
    nome - String
    endereco - String
    email -String

    Classe Cliente
     [code]
         public class Cliente {

private  String id;
private String nome;
private String endereco;
private String email;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getEndereco() {
    return endereco;
}

public void setEndereco(String endereco) {
    this.endereco = endereco;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

}
[/code]

 Arquivo hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>  
       <session-factory>  
           <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>  
           <property name="hibernate.connection.url">jdbc:jtds:sqlserver://192.168.0.106/testeHibernete1</property>  
           <property name="hibernate.connection.username">joseph</property>  
           <property name="hibernate.connection.password">senna2592</property>  
           <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
             
 
           <mapping resource="testehibernete1/Cliente.hbm.xml"/>

       </session-factory>  
   </hibernate-configuration>  
Cliente.hbm.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/
hibernate-mapping-3.0.dtd">

<hibernate-mapping>
 <class name="testehibernete1.Cliente" table="Clientes">

  <property name="id" type="java.lang.String" />
  <property name="nome" type="java.lang.String" />
  <property name="endereco" type="java.lang.String" />
  <property name="email" type="java.lang.String" />
  
 </class>

</hibernate-mapping>

Erro apresentado ao executar o exemplo

init:
deps-jar:
Copying 1 file to C:\Documents and Settings\Administrador\Meus documentos\NetBeansProjects\testeHibernete1\build\classes
compile:
run:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource testehibernete1/Cliente.hbm.xml
        at org.hibernate.cfg.Configuration.addResource(Configuration.java:575)
        at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1593)
        at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1561)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1540)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1514)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:1434)
        at testehibernete1.ClienteDAO.<init>(ClienteDAO.java:19)
        at testehibernete1.Main.main(Main.java:26)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from input stream
        at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:514)
        at org.hibernate.cfg.Configuration.addResource(Configuration.java:572)
        ... 7 more
Caused by: org.dom4j.DocumentException: Illegal character in URL Nested exception: Illegal character in URL
        at org.dom4j.io.SAXReader.read(SAXReader.java:484)
        at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:505)
        ... 8 more
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

Alguém sabe aonde está o meu erro?

Obrigado :wink:

Pela mensagem

Caused by: org.dom4j.DocumentException: Illegal character in URL Nested exception: Illegal character in URL

Parece que o seu Cliente.hbm.xml esta com algum erro de digitacao. De uma olhada nisso. (refaca o arquivo, use um template que voce sabe que funciona etc etc)

Rafael

[code]# <?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-mapping

PUBLIC “-//Hibernate/Hibernate Mapping DTD//EN”

"http://hibernate.sourceforge.net/

hibernate-mapping-3.0.dtd">

[/code]

testehibernate1 é seu package onde está o hbm certo? Eu aconselho a usar o nome da tabela no singular.

Sugiro que vc naum faça o mapeamento via xml,
e sim utilizando annotations JPA(Java Persistent Annotations)

você jogaria fora o arquivo Cliente.hbm.xml e a sua classe ficaria da seguinte forma.


@Entity
@Table(name = "cliente")
 public class Cliente {
    
    private  String id;
    private String nome;
    private String endereco;
    private String email;

    @Id
    @Column(name = "id"
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Column(name = "nome")
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Column(name = "endereco")
    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    @Column(name = "email")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }


}
         

e o <mapping resource=“testehibernete1/Cliente.hbm.xml”/>
vc alteraria por

<mapping class=“pacote.Cliente” />

vc não teria mais o problema de parse de um xml e os erros seriam mais específicos
do que erro de parse do arquivo

Olá pessoal,

     Primeiramente obrigado pela ajuda.
     
     Fiz o último passo citado no último post pelo nosso colega. Aconteceu esse problema.

  [code]init:

deps-jar:
Compiling 2 source files to C:\Documents and Settings\jose\Meus documentos\NetBeansProjects\exemploHibernete1\build\classes
compile:
run:
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:128)
at exemplohibernete1.ClienteDAO.<init>(ClienteDAO.java:25)
at exemplohibernete1.Main.main(Main.java:29)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)
[/code]

     Adicionei uma classe ClienteDAO ao projeto

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package exemplohibernete1;

/**
*

  • @author jose
    /
    import org.hibernate.
    ;
    import org.hibernate.cfg.Configuration;

public class ClienteDAO{

 private SessionFactory factory;

 public ClienteDAO() throws Exception{
     
    factory = new Configuration().configure().buildSessionFactory();

 }
 
 public void insert(Cliente oCliente) throws Exception{
     Session session = factory.openSession();
     session.save(oCliente);
     session.flush();
     session.close();
 }

}

[/code]

    Classe Main

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package exemplohibernete1;

/**
*

  • @author jose
    */
    public class Main {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {

      try {

           Cliente oCliente = new Cliente();
           oCliente.setId("1");
           oCliente.setNome("José");
           oCliente.setEndereco("Antonio");
           oCliente.setEmail("jose@eduweb.com.br");
           //Chamada a operação transacional2
           
           ClienteDAO oClienteDAO = new ClienteDAO();
           oClienteDAO.insert(oCliente);
      
           System.out.println("Cliene incluído com sucesso!");
      

      } catch (Exception e) {
      System.out.println(“Error:”);
      e.printStackTrace();
      }
      }

}
[/code]

Alguém pode me orientar neste erro que esta acontecendo?

Grato pela ajuda :wink:

Bom o erro que deu eh que está naum está encontrando uma classe no seu classpath

Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

Verifique se vc tem algum jar no seu projeto que comece com sfl4j-log12

se não tiver você precisa add ao seu classpath. Se existir sua versão deve ser antiga e possivelmente

não contém esta classe "StaticLoggerBinder ".

Olá beleza,

     Não achei esse jar. Baixei a ultima versão no site do hibernate. 

    Baixei:

    Hibernate Core
    Hibernate Entity Manager
    Hibernate Annotattions

    Adicionei todos os jars nesse projeto. Fiz algo de errado?

Grato

Baixa esse jar e põe no seu classpath

Parece que o hibernate o utiliza as classes desse pacote para gravar
logs e exibir sqls gerados

http://www.slf4j.org/download.html

Acho que o seu hibernate não está achando o log4j para stdout… tipo o arquivo property do log4j

Olá,

   Valeu pela ajuda. Esse pequeno exemplo está me dando muita dor de cabeça. Gostaria de fazer um exemplo para desktop usando Hibernate e JPA.


   Agora deu esse erro:

init: deps-jar: Copying 1 file to C:\Documents and Settings\jose\Meus documentos\NetBeansProjects\exemploHibernete1\build\classes compile: run: Exception in thread "main" java.lang.StackOverflowError at java.lang.reflect.Method.&lt;init&gt;(Method.java:111) at java.lang.reflect.Method.copy(Method.java:138) at java.lang.reflect.ReflectAccess.copyMethod(ReflectAccess.java:118) at sun.reflect.ReflectionFactory.copyMethod(ReflectionFactory.java:282) at java.lang.Class.searchMethods(Class.java:2628) at java.lang.Class.getMethod0(Class.java:2642) at java.lang.Class.getMethod(Class.java:1579) at org.apache.commons.logging.LogFactory.getContextClassLoader(LogFactory.java:482) at org.apache.commons.logging.LogFactory$1.run(LogFactory.java:266) at java.security.AccessController.doPrivileged(Native Method) at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:262) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) .......

    De sua opnião, tem algum exemplo que possa me passar ou ahca melhor contiur nesse código até achar o seu problema?

Valeu

Fala galera,

    Fiquei trabalhando esses dias e não parei para estudar. 

    Alguém tem um exemplo / tutorial de como usar o Hibernate com JPA ?

Grande abraço :wink: