Ajuda com exemplo básico Hibernate

Olá,
Estou tentando fazer um exemplo bem simples de persistencia de dados usando o hibernate, porém está dando esta exeção:

0 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.4.0.GA
32 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.1.GA
32 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
32 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
32 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
125 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.1.0.GA
125 [main] INFO org.hibernate.ejb.Version - Hibernate EntityManager 3.4.0.GA
Exception in thread "main" java.lang.AbstractMethodError: org.slf4j.impl.SimpleLogger.trace(Ljava/lang/String;Ljava/lang/Object;)V
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:221)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
	at hibernate.teste.TesteHibernate.main(TesteHibernate.java:10)

Abaixo segue o código:


package hibernate.teste;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class TesteHibernate {
	
	public static void main(String[] args) {
		EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("maindatabasePU");
		EntityManager entityManager = entityManagerFactory.createEntityManager();
		
		Aluno aluno = new Aluno();
		aluno.setId(8);
		aluno.setNome("Cris");
		aluno.setEmail("cris@kiq.com.br");
		
		entityManager.getTransaction().begin();
		entityManager.persist(aluno);
		entityManager.getTransaction().commit();
		entityManager.close();
	}
}

persistence.xml

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

<persistence 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_1_0.xsd" 
			 version="1.0">
	<persistence-unit name="maindatabasePU" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
			<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
			<property name="hibernate.connection.username" value="postgres" />
			<property name="hibernate.connection.password" value="database" />
			<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/escola" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
			<property name="hibernate.show_sql" value="true" />
		</properties>
	</persistence-unit>
</persistence>

Acho que já inclui todos os jars necessários. Se alguem poder me ajudar!!

Cade o mapeamento de Aluno???
Coloca aew pra gente ver.

Esta aqui:

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Aluno {
	
	private int _id;
	private String _nome;
	private String _email;

	@Id
	public int getId() {
		return _id;
	}
	public void setId(int id) {
		_id = id;
	}
	public String getNome() {
		return _nome;
	}
	public void setNome(String nome) {
		_nome = nome;
	}
	public String getEmail() {
		return _email;
	}
	public void setEmail(String email) {
		_email = email;
	}
}

veja um arquivo que tenho aqui , hibernate.cfg.xml nele eu coloco /indico as classes mapeadas veja:

<?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 name="MinhaSessao">
		<property name="connection.datasource">
			java:/PostgresDS
		</property>
		<property name="dialect">
			org.hibernate.dialect.PostgreSQLDialect
		</property>
		<property name="show_sql">true</property>
		<property name="hibernate.jdbc.batch_size">20</property>

		<property name="hibernate.cache.provider_class">
			org.hibernate.cache.EhCacheProvider
		</property>
		<property name="hibernate.cache.use_second_level_cache">
			true
		</property>
		<property name="hibernate.generate_statistics">true</property>
		<property name="hibernate.cache.use_query_cache">true</property>
		<property name="show_sql">true</property>
		<property name="hibernate.use_sql_comments"/>
		<property name="hibernate.format_sql"></property>	


		<property name="hibernate.jdbc.batch_size">50</property>
		<mapping class="com.Lgweb.Tcc.Model.Cidade" />
		<mapping class="com.Lgweb.Tcc.Model.Cliente" />
		<mapping class="com.Lgweb.Tcc.Model.Condicaopagamento" />
		<mapping class="com.Lgweb.Tcc.Model.Contaspagar" />
		<mapping class="com.Lgweb.Tcc.Model.Contasreceber" />
		<mapping class="com.Lgweb.Tcc.Model.DiascondicaoDias" />
		<mapping class="com.Lgweb.Tcc.Model.Dias" />
		<mapping class="com.Lgweb.Tcc.Model.Fornecedor" />
		<mapping class="com.Lgweb.Tcc.Model.Numeracao" />
		<mapping class="com.Lgweb.Tcc.Model.Pedido" />
		<mapping class="com.Lgweb.Tcc.Model.Pedidocompra" />
		<mapping class="com.Lgweb.Tcc.Model.Itenscompra" />
		<mapping class="com.Lgweb.Tcc.Model.Itensvenda" />
		<mapping class="com.Lgweb.Tcc.Model.Perfil" />
		<mapping class="com.Lgweb.Tcc.Model.Pessoafisica" />
		<mapping class="com.Lgweb.Tcc.Model.Pessoajuridica" />
		<mapping class="com.Lgweb.Tcc.Model.Produto" />
		<mapping class="com.Lgweb.Tcc.Model.Ramoatividade" />
		<mapping class="com.Lgweb.Tcc.Model.Estado" />
		<mapping class="com.Lgweb.Tcc.Model.Usuario" />
		<mapping class="com.Lgweb.Tcc.Model.Formapagamento" />
		<mapping class="com.Lgweb.Tcc.Model.ProdutoNumeracao" />
		<mapping class="com.Lgweb.Tcc.Model.DetalhesParcela" />
		<mapping class="com.Lgweb.Tcc.Model.DetalhesParcelaPaga" />
		<mapping class="com.Lgweb.Tcc.Model.EnderecoCobranca" />
		<mapping class="com.Lgweb.Tcc.Model.EnderecoEntrega" />
		<mapping class="com.Lgweb.Tcc.Model.Anotacoes" />
		

	</session-factory>
</hibernate-configuration>

nao vi isto no seu vc esta usando autodetcao de mapeamento?

Na verdade eu estou seguindo um pequeno tutorial, e pelo que eu entendi no tutorial o mapeamento das classes é feito usando essas Annotations usada na classe Aluno, indicando a entidade e a chave primária, no tutorial não fala sobre este arquivo de configuração que vc postou, mas vou tentar usa-lo pra ver!!!

provavelmente vc vai ter que indicar no hibernate.cfg.xml as classes que mapeo com anotacoes,utilizando

<mapping class=“seuPacote.ClasseMapeada” />

Este arquivo deve ficar em algum lugar específico?

no classpath,na verdade vc esta usando Jpa neh,pois vc tem um arquivo persistence.xml,acredito que o mapeamento das classes anotadas deve ficar lah entaum.

cris.t,
procure no seu persistence.xml esta linha:

<provider>org.hibernate.ejb.HibernatePersistence</provider>

e acrescente isto:

<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>pacote.classe</class> //aqui vc coloca o caminho da sua classe, faça isso para todas as classes
<class>pacote.classe</class>
...

Espero ter ajudado!

Ish…ainda assim não funcionou não, continua dando a mesma exception falando sobre essa classe org.slf4j.impl.SimpleLogger:

Exception in thread "main" java.lang.AbstractMethodError: org.slf4j.impl.SimpleLogger.trace(Ljava/lang/String;Ljava/lang/Object;)V
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:221)

Eu deixei o hibernate.cfg.xml do mesmo jeito que o seu apenas apaguei o mapeamento das suas classes e coloquei a minha:

<?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 name="MinhaSessao">  
         <property name="connection.datasource">  
             java:/PostgresDS  
         </property>  
         <property name="dialect">  
             org.hibernate.dialect.PostgreSQLDialect  
         </property>  
         <property name="show_sql">true</property>  
         <property name="hibernate.jdbc.batch_size">20</property>  
   
         <property name="hibernate.cache.provider_class">  
             org.hibernate.cache.EhCacheProvider  
         </property>  
         <property name="hibernate.cache.use_second_level_cache">  
             true  
         </property>  
         <property name="hibernate.generate_statistics">true</property>  
         <property name="hibernate.cache.use_query_cache">true</property>  
         <property name="show_sql">true</property>  
         <property name="hibernate.use_sql_comments"/>  
         <property name="hibernate.format_sql"></property>     
   
   
         <property name="hibernate.jdbc.batch_size">50</property>  
         <mapping class="hibernate.teste.Aluno" />  
   
     </session-factory>  
</hibernate-configuration>  

Valew pela ajuda Renato, mas a exception ainda continua…

Faça da seguinte forma:

<?xml version="1.0" encoding="UTF-8"?>  
  
<persistence 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_1_0.xsd"   
             version="1.0">  
    <persistence-unit name="maindatabasePU" transaction-type="RESOURCE_LOCAL">  
        <provider>org.hibernate.ejb.HibernatePersistence</provider> 
        <class>teste.Aluno</class>
        <properties>  
            <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />  
            <property name="hibernate.connection.username" value="postgres" />  
            <property name="hibernate.connection.password" value="database" />  
            <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/escola" />  
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />  
            <property name="hibernate.show_sql" value="true" />  
        </properties>  
    </persistence-unit>  
</persistence>

Sendo teste o nome do pacote e aluno o nome da classe.
Não precisa utilizar o hibernate.cfg.xml!!

Foi exatamente assim que eu fiz, porém não resolveu…continua dando a mesma exception!!!

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

<persistence 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_1_0.xsd" 
			 version="1.0">
	<persistence-unit name="maindatabasePU" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<class>hibernate.teste.Aluno</class>
		<properties>
			<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
			<property name="hibernate.connection.username" value="postgres" />
			<property name="hibernate.connection.password" value="database" />
			<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/escola" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
			<property name="hibernate.show_sql" value="true" />
		</properties>
	</persistence-unit>
</persistence>

certo,
pelo que vi, vc tem um pacote chamado hibernate que contem um pacote chamado teste que contem o teste?

Sim, eu tenho o pacote hibernate.teste e dentro dele eu tenho a classe Aluno e a classe TesteHibernate onde está o meu método main.

import javax.persistence.Entity;  
import javax.persistence.Id;  
  
@Entity  
public class Aluno implements Serializable{  
      
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int _id;  
    private String _nome;  
    private String _email;  
  
    public int getId() {  
        return _id;  
    }  
    public void setId(int id) {  
        _id = id;  
    }  
    public String getNome() {  
        return _nome;  
    }  
    public void setNome(String nome) {  
        _nome = nome;  
    }  
    public String getEmail() {  
        return _email;  
    }  
    public void setEmail(String email) {  
        _email = email;  
    }  
}  

Tente implementar assim.
No seu banco o id é assim mesmo _id?

Opa Renato, não adiantou também…a exceção ainda persiste…acredito que não deva ser algo no mapeamento da classe Aluno não, acho que é algo no persistence pois o erro ocorre na segiunte linha:

	EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("maindatabasePU");

E no meu banco os atributos da tabela não estão assim _id estão normal sem o underline, mas não sei se isso influência em algo.

Se no banco o nome das colunas estiverem diferente influenciam sim

Se no mapeamento o nome que vc vai usar para fazer referencia a coluna for diferente do nome da coluna no banco vc precisa usar um annotation.
Da seguinte forma

Vamos supor que o seu banco chama-se ‘teste’ e tem apenas duas colunas, ‘teste_id’ e ‘nome’, ficaria assim seu mapeamento:

@Entity
@Table(name = "teste") //Aqui fica o nome da tabela
public class Teste{
@Id
@Column(name = "teste_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private int id; 

private String nome;

//get set
//hashcode e equals

Se o nome da coluna for diferente vc precisa colocar @Column(name = “”) para informar ao hibernate que o nome da coluna será diferente do que vc vai usar.
Note que isso tambem acontece com o nome da tabela. Aqui não seria necessario o uso do annotation @Table(name = “”), porque o nome da classe é o mesmo da tabela.
faça o teste, tire o underline, e se tiver alguns nomes diferentes acrescente o @Column.

Valew Renato, tirei os underlines mas mesmo assim a exception continua, o tutorial que estou seguindo os atributos estão com underline e no banco sem e o mapeamento coom annotation é feito em cima do méthodo get, porque será em?
Eu acho que axception deva ser na hora de cria o entityManager, porque se fosse com relação a alguma coluna eu acho que teria falando isso na exception, ou teria alguma indicação, não sei.
Mas valew pela ajuda ai!!