JPA Instanciação

6 respostas
D

Gostaria de uma ajuda por favor,

eu tenho um banco criado, logo em seguida criei no netbeans as "Classes de Entidade de Banco de Dados"
e logo em seguida criei o controlador JPA, quando vou declarar um variavel UsuarioJpaController , ele pede um parametro que seria um EMF, o que eu coloco ali aonde esta o “null” no meu exemplo?

Att.

Diego Honorio

6 Respostas

Rodrigo_Sasaki

O que seria um EMF?

tnaires

Deve ser EntityManagerFactory.

E

Voçê deve informar EntityManangerFactory.
faça assim.

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

e no lugar do null voce coloca emf.

E

só lembrando “unitName” é o nome que vc deu à unidade de persistencia no arquivo persistence.xml

D

apareçe esse erro vou postar, o codigo da aplicação tambem.

ERRO /

GRAVE: Servlet.service() for servlet [ValidaLogin] in context with path [/WebApplication1] threw exception javax.persistence.PersistenceException: No Persistence provider for EntityManager named Usuario at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source) at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source) at persistencia.UsuarioJpaController.<init>(UsuarioJpaController.java:29) at Servlets.ValidaLogin.processRequest(ValidaLogin.java:64) at Servlets.ValidaLogin.doPost(ValidaLogin.java:138) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662)
Classe Jpa Controladora

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package persistencia;
import entidades.Usuario;

import java.io.Serializable;

import java.util.List;

import javax.persistence.*;

import javax.persistence.criteria.CriteriaQuery;

import javax.persistence.criteria.Root;

import persistencia.exceptions.NonexistentEntityException;

import persistencia.exceptions.PreexistingEntityException;

/**
*

  • @author Diego
    */
    public class UsuarioJpaController implements Serializable {

    public UsuarioJpaController(EntityManagerFactory emf) {
    
    this.emf = emf;
    
    }
    
    private EntityManagerFactory emf = null;
    
    public EntityManager getEntityManager() {
    
    return emf.createEntityManager();
    
    }
    
    public void create(Usuario usuario) throws PreexistingEntityException, Exception {
    
    EntityManager em = null;
    
    try {
    
    em = getEntityManager();
    
    em.getTransaction().begin();
    
    em.persist(usuario);
    
    em.getTransaction().commit();
    
    } catch (Exception ex) {
    
    if (findUsuario(usuario.getCodigo()) != null) {
    
    throw new PreexistingEntityException(Usuario " + usuario + " already exists., ex);
    
    }
    
    throw ex;
    
    } finally {
    
    if (em != null) {
    
    em.close();
    
    }
    
    }
    
    }
    
    public void edit(Usuario usuario) throws NonexistentEntityException, Exception {
    
    EntityManager em = null;
    
    try {
    
    em = getEntityManager();
    
    em.getTransaction().begin();
    
    usuario = em.merge(usuario);
    
    em.getTransaction().commit();
    
    } catch (Exception ex) {
    
    String msg = ex.getLocalizedMessage();
    
    if (msg == null || msg.length() == 0) {
    
    Short id = usuario.getCodigo();
    
    if (findUsuario(id) == null) {
    
    throw new NonexistentEntityException(The usuario with id " + id + " no longer exists.);
    
    }
    
    }
    
    throw ex;
    
    } finally {
    
    if (em != null) {
    
    em.close();
    
    }
    
    }
    
    }
    
    public void destroy(Short id) throws NonexistentEntityException {
    
    EntityManager em = null;
    
    try {
    
    em = getEntityManager();
    
    em.getTransaction().begin();
    
    Usuario usuario;
    
    try {
    
    usuario = em.getReference(Usuario.class, id);
    
    usuario.getCodigo();
    
    } catch (EntityNotFoundException enfe) {
    
    throw new NonexistentEntityException(The usuario with id " + id + " no longer exists., enfe);
    
    }
    
    em.remove(usuario);
    
    em.getTransaction().commit();
    
    } finally {
    
    if (em != null) {
    
    em.close();
    
    }
    
    }
    
    }
    
    public List findUsuarioEntities() {
    
    return findUsuarioEntities(true, -1, -1);
    
    }
    
    public List findUsuarioEntities(int maxResults, int firstResult) {
    
    return findUsuarioEntities(false, maxResults, firstResult);
    
    }
    
    private List findUsuarioEntities(boolean all, int maxResults, int firstResult) {
    
    EntityManager em = getEntityManager();
    
    try {
    
    CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
    
    cq.select(cq.from(Usuario.class));
    
    Query q = em.createQuery(cq);
    
    if (!all) {
    
    q.setMaxResults(maxResults);
    
    q.setFirstResult(firstResult);
    
    }
    
    return q.getResultList();
    
    } finally {
    
    em.close();
    
    }
    
    }
    
    public Usuario findUsuario(Short id) {
    
    EntityManager em = getEntityManager();
    
    try {
    
    return em.find(Usuario.class, id);
    
    } finally {
    
    em.close();
    
    }
    
    }
    
    public int getUsuarioCount() {
    
    EntityManager em = getEntityManager();
    
    try {
    
    CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
    
    Root rt = cq.from(Usuario.class);
    
    cq.select(em.getCriteriaBuilder().count(rt));
    
    Query q = em.createQuery(cq);
    
    return ((Long) q.getSingleResult()).intValue();
    
    } finally {
    
    em.close();
    
    }
    
    }
    

}

se alguem poder entender e me dar uma força, nao to conseguindo do modo que vc citou acima ali elieber :/.

Att. Diego Honorio

E

Cara desculpe a demora, não sei se se vc já obteve a solução, coloca aí o seu persistence.xml e a parte do codigo onde vc chama a classe UsuarioJpaController, tipo acho que vc deve estar fazendo assim.

EntityManagerFactory emf = Persistence.createEntityManagerFactory("Usuario");
UsuarioJpaController user = new UsuarioJpaController(emf);

verifique se o seu persistence esta com o mesmo unitName que vc está passando, no seu caso é Usuario.
mas posta aí seu persistence.xml para gente ver.

Criado 25 de abril de 2012
Ultima resposta 14 de mai. de 2012
Respostas 6
Participantes 4