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();
}
}
vai ^^
é sempre bom na hora de criar a factory, colocar o synchronized…
eu faria + ou - assim
[code]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;
}
}
} [/code]
[quote=Lavieri]vai ^^
é sempre bom na hora de criar a factory, colocar o synchronized…
eu faria + ou - assim
[code]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;
}
}
} [/code][/quote]
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.