Olá,
hoje pra gravar em um objeto Usuario tenho que pegar a conexão com o banco
via hibernate e passo para todos DAOs essa conexão.
Como em Spring poderia melhorar isso ???
Alguém pode me ajudar …ou ter exemplos pra isso ???
abs
Xxxlic static void main(String[] args) {
//Pegar Session Hibernate
Session session = HibernateUtil.openSession();
tx = session.beginTransaction();
try{
//Passa a Session para DAO
XxxNivelFacade XxxNivelFacade = new XxxNivelFacade(session);
XxxFilialFacade XxxFilialFacade = new XxxFilialFacade(session);
XxxUsuarioFacade XxxUsuarioFacade = new XxxUsuarioFacade(session);
//Instancia o objeto XxxUsuario
XxxUsuario p = new XxxUsuario();
//Ler o nivel
XxxNivel nivel = XxxNivelFacade.find(XxxNivel.class, 01L);
p.setNivel(nivel);
//Ler a filial
XxxFilial filial = XxxFilialFacade.find(XxxFilial.class, 900L);
p.setFilial(filial);
// Popula o Objeto XxxUsuario
p.setLogin("pwd999");
p.setSenha("senha nova9");
p.setDtInicial(new Date());
p.setDtFim(new Date());
p.setNomeUsuario("Usuario999");
Long nrcpf = Long.valueOf("[telefone removido]");
p.setCpf(nrcpf);
// Grava o objeto XxxUsuario
XxxUsuarioFacade.persist(p);
tx.commit();
System.out.println("____________________________________________________");
System.out.println("Id = "+p.getId());
}catch(DAOException d){
tx.rollback();
System.out.println("Erro ="+d);
}catch(Exception e){
tx.rollback();
System.out.println("Erro ="+e);
}
}
Xxxlic class XxxUsuarioFacade {
private Transaction tx;;
private XxxUsuarioDAOImpl XxxUsuarioDAOImpl ;
private Session session ;
private static Logger logger = Logger.getLogger(XxxUsuarioFacade.class);
Xxxlic XxxUsuarioFacade(Session session){
this.session = session;
XxxUsuarioDAOImpl = new XxxUsuarioDAOImpl(this.session) ;
}
@SuppressWarnings("unchecked")
Xxxlic <T> T find(Class<T> classe, Serializable id) throws DAOException {
logger.info("Listando Id="+id);
XxxUsuario retorno = null;
try{
retorno = (XxxUsuario) XxxUsuarioDAOImpl.find(classe, id);
}catch(DAOException d){
tx.rollback();
System.out.println("Erro na Atualização do Usuário "+ d);
}
return (T) retorno;
}
Xxxlic <T> void merge(T entity) throws DAOException {
logger.info("Salvando ou atualizando " + entity);
try{
XxxUsuarioDAOImpl.merge(entity);
}catch(DAOException d){
System.out.println("Erro na Atualização do Usuário "+ d);
}
}
Xxxlic <T> void persist(T entity) throws DAOException {
logger.info("salvando " + entity);
try{
XxxUsuarioDAOImpl.persist(entity);
}catch(DAOException d){
System.out.println("Erro na Inclusão do Usuário "+ d);
}
}
Xxxlic <T> void remove(T entity) throws DAOException {
logger.info("Deletando " + entity);
try{
XxxUsuarioDAOImpl.remove(entity);
}catch(DAOException d){
System.out.println("Erro na Delelção do Usuário "+ d);
}
}
Xxxlic Collection<XxxUsuario> findByName(String nome) throws DAOException{
logger.info("Busca Por Nome =" + nome);
Collection<XxxUsuario> usuarios = new ArrayList<XxxUsuario>();
try{
usuarios = XxxUsuarioDAOImpl.findByName(nome);
}catch(DAOException d){
tx.rollback();
System.out.println("Erro na Busca por Nome "+ d);
}
return usuarios;
}
Xxxlic class XxxUsuarioDAOImpl extends BaseDAO implements IXxxUsuarioDAO{
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(XxxUsuarioDAOImpl.class);
Xxxlic XxxUsuarioDAOImpl(Session session) {
super(session);
}
@SuppressWarnings("unchecked")
Xxxlic Collection<XxxUsuario> findByName(String nome) throws DAOException{
Criteria c = session.createCriteria(XxxUsuario.class);
c.add(Restrictions.like("nomeUsuario", "%" + nome.toUpperCase() + "%"));
c.addOrder(Order.asc("nomeUsuario"));
return c.list();
}
}
