[Dúvida] Dicas de como configurar o Hibernate no projeto

Olá a todos! Estou iniciando no JAVA e estou tentando fazer uma aplicação básica, um CRUD usando JSF e Hibernate.

Já segui alguns tutoriais, mas não consegui terminar… Tenho uma dúvida sobre o funcionamento:

Depois de começar um projeto com JSF + Facelets, para inserir o Hibernate nele baixei o Hibernate Core, Annotation, e Entity Manager, e inseri as bibliotecas que vieram. Depois criei um arquivo persistence.xml(código logo abaixo). Preciso fazer mais alguma coisa?

Vou colocar os códigos que estou usando para facilitar o entendimento de quem puder ajudar.

Model:


package model;

import javax.persistence.Entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table( name = "pessoa" )
public class Pessoa implements Serializable{

	@Id
	@GeneratedValue
	@Column( name = "id" )
	private Integer id;

	@Column( name = "nome" )
        private String nome;

	@Column( name = "idade" )
	private Integer idade;

	@Column( name = "sexo" )
	private char sexo;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
	
	public Integer getIdade() {
		return idade;
	}

	public void setIdade(Integer idade) {
		this.idade = idade;
	}

	public String getNome() {
		return nome;
	}

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

	public char getSexo() {
		return sexo;
	}

	public void setSexo(char sexo) {
		this.sexo = sexo;
	}

}

Código do Save:


        EntityManagerFactory emf = Persistence.createEntityManagerFactory( "BancoPU" );

        EntityManager em = emf.createEntityManager();
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        em.persist( pessoa );

        tx.commit();
        em.close();

persistence.xml:


<?xml version="1.0" encoding="UTF-8"?>
<persistence
	version="1.0"
	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">

	<persistence-unit name="BancoPU">
		
		<provider>org.hibernate.ejb.HibernatePersistence</provider>

		<properties>
			<property name="hibernate.archive.autodetection" value="class, hbm"/>
			<property name="hibernate.show_sql" value="true"/>
			<property name="hibernate.connection.username" value="root"/>
			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
			<property name="hibernate.connection.password" value=""/>
			<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/banco"/>
			<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
		</properties>

	</persistence-unit>

</persistence>

O erro está acontecendo na linha do EntityManager, quando vou salvar, e não consigo entender porque…

Se estiver confuso pode falar que tento explicar melhor.

Se alguém puder ajudar, fico agradecido.

Abraço

onde esta o mapeamento do seu hbm ?

ele usa annotations…nao precisa de mapeamento…aparentemente ta tudoi ok…qual erro ta dando?

Abel, segue o erro que está aparecendo:

javax.faces.FacesException: #{pessoaBean.create}: javax.persistence.PersistenceException: No Persistence provider for EntityManager named BancoPU

tenta fazer a persistencia usando session!pelo jeito vc ta usando o eclipse…achoq ue pode ser tb o seu persistence.xml faz o seguinte…cria um HibernateUtil e usa a session pra fazer a persistencia…se de r o mesmo erro posta ai…

Cara, pessoal aqui tava dizendo que era o provider, pois não estava utilizando ejb… Nessa parte:

Você sabe algum outro provider que posso utilizar?

Oi Vitor,

aparentemente está tudo ok, onde está o persistence.xml?

[quote]Oi Vitor,

aparentemente está tudo ok, onde está o persistence.xml?
[/quote]

Rafael, no netbeans ele fica dentro de Arquivos de Configuração. Tinha dado uma lida que ele deveria ficar no META-INF e movi para lá, mas também não deu certo. Deu uma mensagem que não encontrava o persistence.xml, no NetBeans ele fica no Arquivos de Configuração mesmo…

Peguei o Eclipse aqui, vou tentar fazer por ele pra ver se muda alguma coisa… Qualquer coisa posto aqui.

Valeu!

Acho que no Netbeans é para ficar nesse diretório mesmo, a não ser que você não tenha configurado corretamente.

Pessoal, deu certo! =D

Troquei o NetBeans pelo Eclipse, acabei descobrindo o erro, mas não sei como resolvo isso no NetBeans.

Referente ao erro “No Persistence provider for EntityManager named BancoPU”, procurei muito sobre isso, e vi diferentes respostas para o mesmo problema:

  • Uns diziam que a lib “hibernate-entitymanager.jar” tinha que estar no ClassPath;

  • Outros diziam que na Entidade, o import tinha que ser “import javax.persistence.EntityManagerFactory;” e não o import pela classe do Hibernate;

Agora, a solução que deu certo para mim, foi criar uma pasta META-INF dentro da pasta src e colocar o persistence lá. No NetBeans, como já havia dito, o arquivo persistence fica dentro de “Arquivos de Configuração”, uma pasta chamada “conf”, e estava dando esse mesmo problema.

Obrigado pela ajuda de todos, e espero que essa solução sirva para outros! Valeu!