esse ai é meu superDao
public abstract class SuperDao {
protected EntityManagerFactory emf = null;
protected EntityManager em = null;
public SuperDao() {
emf = Persistence.createEntityManagerFactory("DeskClinPersistence");
em = emf.createEntityManager();
}
public abstract List listaTodos(String query);
public abstract Object buscarPorId(Integer id);
public abstract List<Object> listarPorString(Object obj, String str);
public void persiste(Object object) {
//emf = javax.persistence.Persistence.createEntityManagerFactory("DeskClinPersistence");
//em = emf.createEntityManager();
em.getTransaction().begin();
try {
em.persist(object);
em.getTransaction().commit();
} catch (Exception e) {
System.out.print(e.getMessage());
e.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
}
}
ai eu tenho um cidadeDao que extend o superDao e trabalha sobre a entidade Cidade
@Entity
@Table(name = "cidade")
@NamedQueries({@NamedQuery(name = "Cidade.findByIdCidade", query = "SELECT c FROM Cidade c WHERE c.cidadePK.idCidade = :idCidade"), @NamedQuery(name = "Cidade.findByUFidUf", query = "SELECT c FROM Cidade c WHERE c.cidadePK.uFidUf = :uFidUf"), @NamedQuery(name = "Cidade.findByNome", query = "SELECT c FROM Cidade c WHERE c.nome = :nome")})
public class Cidade implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected CidadePK cidadePK;
@Column(name = "nome")
private String nome;
@Column(name = "distrito")
private String distrito;
@Column(name = "cep")
private String cep;
//get e set omitido :P
esse é o metodo de CidadeDao q eu uso para carregar as cidades em um List
public static final String listaCidadeNome ="Select cid.nome from Cidade cid";
@Override
public List<Cidade> listaTodos(String query) {
listaCidade = em.createQuery(query).getResultList();
em.close();
emf.close();
return listaCidade;
}
e esse é o codigo que eu uso para atribuir e carrgar a consulta na tela
public void carregarCidade(){
CidadeDao cidDao = new CidadeDao();
Iterator i = cidDao.listaTodos(CidadeDao.listaCidadeNome).iterator();
while (i.hasNext()) {
cCidade.addItem(String.valueOf(i.next()));
}
o que podem me dizer sobre isso?
desconfio do gerenciamento do EMF e do EM, mas nao sei como poderia melhorar.