JPA EntityManagerFactory no JSF

2 respostas
weiseleiter

Vou ter dor de cabeça se eu utilizar uma classe como a abaixo para obter
a EntityManagerFactory do JPA no JSF??

public class JPAUtil {

    private static EntityManagerFactory emf;

    static {
        initializeEntityManagerFactory();
    }

    private static void initializeEntityManagerFactory(){
        try {
            emf = Persistence.createEntityManagerFactory("myPU");
        } catch ( Throwable t ){
            t.printStackTrace();
        }
    }
    
    public static EntityManager getEntityManager(){
        if (emf == null ) {
            initializeEntityManagerFactory();
        }
        return emf.createEntityManager();
    }

    public static EntityManagerFactory getEntityManagerFactory() {
        return emf;
    }

    public static void shutdown(){
        emf.close();
    }
}

2 Respostas

Lavieri

vai ^^

é sempre bom na hora de criar a factory, colocar o synchronized...

eu faria + ou - assim
public class JPAUtil {   
  
    private static EntityManagerFactory emf;   
  
    static {   
        getEntityManagerFactory();   
    }
       
    public static EntityManager getEntityManager(){   
        return getEmf.createEntityManager();   
    }   
  
    public static synchronized EntityManagerFactory getEntityManagerFactory() {   
        if (emf == null) {
           try { 
              emf = Persistence.createEntityManagerFactory("myPU");   
           } catch ( Throwable t ){   
              t.printStackTrace();   
           } 
        }
        return emf;
    }   
  
    public static void shutdown(){   
        if(emf != null) {
            emf.close();
            emf = null;
        }
    }   
}
weiseleiter
Lavieri:
vai ^^

é sempre bom na hora de criar a factory, colocar o synchronized...

eu faria + ou - assim
public class JPAUtil {   
  
    private static EntityManagerFactory emf;   
  
    static {   
        getEntityManagerFactory();   
    }
       
    public static EntityManager getEntityManager(){   
        return getEmf.createEntityManager();   
    }   
  
    public static synchronized EntityManagerFactory getEntityManagerFactory() {   
        if (emf == null) {
           try { 
              emf = Persistence.createEntityManagerFactory("myPU");   
           } catch ( Throwable t ){   
              t.printStackTrace();   
           } 
        }
        return emf;
    }   
  
    public static void shutdown(){   
        if(emf != null) {
            emf.close();
            emf = null;
        }
    }   
}

Mas eu preciso criar mais que uma EntityManagerFactory? e a partir dela eu crio
as EntityManagers?

Esqueci de dizer, estou precisando controlar o EMF no braço pq vou usar o Tomcat,
e ele não tem controle de IoC.

Criado 19 de março de 2009
Ultima resposta 19 de mar. de 2009
Respostas 2
Participantes 2