Bom gente, é o seguinte: Estou iniciando JPA e Hibernate, e fiz um teste, mas esta gerando erro.
jun 05, 2017 12:55:11 PM org.hibernate.jpa.boot.internal.PersistenceXmlParser doResolve
INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath
Exception in thread "main" java.lang.ExceptionInInitializerError
at ExecutandoAutomovel.main(ExecutandoAutomovel.java:10)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named default
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at JPAUtil.<clinit>(JPAUtil.java:6)
... 1 more
Minha classe que vai persistir:
package br.com.jorge.bean;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Automovel {
@Id @GeneratedValue
private Long id;
private String marca;
private String modelo;
private Integer anoDeFabricacao;
private Integer anoModelo;
private String observacao;
public Automovel() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public Integer getAnoDeFabricacao() {
return anoDeFabricacao;
}
public void setAnoDeFabricacao(Integer anoDeFabricacao) {
this.anoDeFabricacao = anoDeFabricacao;
}
public Integer getAnoModelo() {
return anoModelo;
}
public void setAnoModelo(Integer anoModelo) {
this.anoModelo = anoModelo;
}
public String getObservacao() {
return observacao;
}
public void setObservacao(String observacao) {
this.observacao = observacao;
}
}
Classe onde inicio a entitymanagerfactory:
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JPAUtil {
private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("default");
public static EntityManager getEntityManager(){
return emf.createEntityManager();
}
}
E meu metodo main:
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import br.com.jorge.bean.Automovel;
public class ExecutandoAutomovel {
public static void main(String[] args) {
EntityManager em = JPAUtil.getEntityManager();
Automovel auto = new Automovel();
auto.setAnoDeFabricacao(2010);
auto.setModelo("ferrari");
auto.setObservacao("nunca foi batido");
EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(auto);
tx.commit();
em.close();
}
}
E meu persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0">
<persistence-unit name="default">
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/fj21" />
<property name="javax.persistence.jdbc.user" value="usuario" />
<property name="javax.persistence.jdbc.password" value="senha" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>