Pessoal
Tenho um sistema com varios DAOs, mas sinto que dá pra melhorar o codigo deles...
Estou chamando a cada metodo um novo EntityMagager...
Como eu faria pra melhorar este código e não repetir tanto esse trecho do entity.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.org.system4.DAO;
import br.org.system4.entity.Code;
import java.math.BigDecimal;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.EntityManager;
import javax.transaction.UserTransaction;
/**
*
* @author rodrigo.klein
*/
public class CodeDAO {
public static void add(String ium, String status){
Code c = new Code();
c.setIum(ium);
c.setStatus(status);
persist(c);
}
public static void add(String ium){
Code c = new Code();
c.setIum(ium);
persist(c);
}
public static Code getCodeByid(int id){
Code code = null;
try {
BigDecimal bgid = BigDecimal.valueOf(Double.valueOf(String.valueOf(id)));
Context ctx = new InitialContext();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
code = (Code) em.createNamedQuery("Code.findById").setParameter("id", bgid).getSingleResult();
} catch (NamingException ex) {
Logger.getLogger(CodeDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return code;
}
public static Code getCodeByIum(String ium){
Code code = null;
try {
Context ctx = new InitialContext();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
code = (Code) em.createNamedQuery("Code.findByIum").setParameter("ium", ium).getSingleResult();
} catch (NamingException ex) {
Logger.getLogger(CodeDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return code;
}
public static List getCodeByStatus(String status){
List codeList = null;
try {
Context ctx = new InitialContext();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
codeList = em.createNamedQuery("Code.findByStatus").setParameter("status", status).getResultList();
} catch (NamingException ex) {
Logger.getLogger(CodeDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return codeList;
}
public static void persist(Object object) {
try {
Context ctx = new InitialContext();
UserTransaction utx = (UserTransaction) ctx.lookup("java:comp/env/UserTransaction");
utx.begin();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
em.persist(object);
utx.commit();
} catch (Exception e) {
System.out.println("Error :"+e.getMessage());
throw new RuntimeException(e);
}
}
}
Valeu..
Abraço