Estou com um problema pra gerenciar meus entitnyManager e o Factory.
Eu criei uma classe singleton pra gerar eles assim:
package br.com.projetos.sisCorp.dao;
import java.io.Serializable;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class ConnectionFactory implements Serializable {
static EntityManagerFactory emF = null;
static EntityManager em = null;
public static EntityManager getEntityManager() {
try{
// se ainda não existir um entityManagerFactory... obtém a instância e atribui ao atributo estático
if ( emF == null ) {
emF = Persistence.createEntityManagerFactory("conexao");
}
em = emF.createEntityManager();
}
catch(Exception e)
{
e.printStackTrace();
}
// retorna o EntityManager... ou uma instância nova (se for a primeira chamada) ou a mesma instância (para chamadas posteriores)...
return em;
}
}
e meu dao herdando ele:
public class ProdutoDao extends ConnectionFactory {
//Mapeamento persistence;
public ProdutoDao(){
//construtor ja chama a conexão
getEntityManager();
}
public void insert(Produto produtos) {
try{
// persistence = new ProdutoController();
//getEntityManager();
em.getTransaction().begin();
em.persist(produtos);
em.getTransaction().commit();
em.close();
}
catch(Exception e) {
e.printStackTrace();
//em.close();
}
}
//lista com criteria
@SuppressWarnings({ "unchecked", "rawtypes" })
public List<Produto> list() {
getEntityManager();
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
cq.select(cq.from(Produto.class));
return em.createQuery(cq).getResultList();
}
//metodo deletar
public void delete(Produto produtos) {
try{
// em = emF.createEntityManager();
em.getTransaction().begin();
em.remove(produtos);
em.getTransaction().commit();
em.close();
}
catch(Exception e) {
e.printStackTrace();
//em.close();
}
}
public void update(Produto produtos) {
// TODO Auto-generated method stub
try{
// em=emF.createEntityManager();
em.getTransaction().begin();
em.merge(produtos);
em.getTransaction().commit();
em.close();
}
finally {
}
}
}
Qual o problema? o update, ele simplesmente não atualiza .
lembrando que estou ultilizando JSF na view.
Mas antes de eu usar o singleton, criando os EM e EMF dentro do proprio dao, o update funcionava.
porem era muito lerdo, assim ficou muito bom a velocidade das transações, porem o update nao funciona.
alguem?
