Duvida como converter Dao generico (hibernate) para Spring?

0 respostas
P

Olá,

tenho hoje a estrutura abaixo de DAO e estou migrando para Spring onde poderia
encontrar algo para ter suporte e entendimento do Spring.

Se alguém possuir exemplo e tutorial sobre assunto agradeço.

abs

public class HibernateUtil {

	private static final Logger logger = Logger.getLogger(HibernateUtil.class);
	private static final SessionFactory sessionFactory;
	private static ThreadLocal<Session> sessions = new ThreadLocal<Session>();
	static {
		sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
	}
	public static Session openSession() {
		if (sessions.get() != null) {
			logger.error("Essa sessão está ainda aberta !! ");
			// grave, alguem nao fechou uma sessao ja aberta!
		}
		sessions.set(sessionFactory.openSession());
		return sessions.get();
	}

	public static void closeCurrentSession() {
		sessions.get().close();
		sessions.set(null);
	}

	public static Session currentSession() {
		return sessions.get();
	}
	
	public static SessionFactory getSessionFactory() {
	    return sessionFactory;
	}
	
}
public interface DAO {


	/**
	 * Método de procura genérico, baseado na entidade passada como exemplo.
	 * 
	 * @param entity
	 *            A entidade utilizada como exemplo na busca.
	 * @return A entidade caso ela seja encontrada, <code>null</code> do
	 *         contrário.
	 * @throws DAOException
	 */
	 <T> T find(Class<T> classe, Serializable id) throws DAOException ;
	

	/**
	 * Método de atualização genérico, faz a atualização dos dados da entidade
	 * informada.
	 * 
	 * @param entity
	 *            A entidade a ser atualizada.
	 * @throws DAOException
	 */
	<T> void merge(T entity) throws DAOException;

	/**
	 * Método de persistência genérico, salva no banco a entidade informada.
	 * 
	 * @param entity
	 *            A entidade a ser persistida.
	 * @throws DAOException
	 */
	<T> void persist(T entity) throws DAOException;

	/**
	 * Método de remoção genérico, remove do banco a entidade informada.
	 * 
	 * @param entity
	 *            A entidade a ser removida.
	 * @throws DAOException
	 */
	<T> void remove(T entity) throws DAOException;
---

public class BaseDAO  implements DAO {
	private static Logger logger = Logger.getLogger(BaseDAO.class);
	protected	Session session;
		
	public BaseDAO(Session session){
		this.session = session; 
	}
	
	@SuppressWarnings("unchecked")
	public <T> T find(Class<T> classe, Serializable id) throws DAOException {
		logger.info("Listando Id="+id);
    	return (T) session.get(classe, id);
	}

	public <T> void merge(T entity) throws DAOException {
		logger.info("Salvando ou atualizando " + entity);
	    session.saveOrUpdate(entity);
		    
	}

	public <T> void persist(T entity) throws DAOException {
		logger.info("salvando  " + entity);
	    session.save(entity);
	}

	public <T> void remove(T entity) throws DAOException {
		logger.info("Deletando " + entity);
   		session.delete(entity);
	}

}
---
public class UsuarioDAOImpl extends BaseDAO  implements UsuarioDAO{
	@SuppressWarnings("unused")
	private static Logger logger = Logger.getLogger(UsuarioDAOImpl.class);
	public UsuarioDAOImpl(Session session) {
		super(session);
	}
	
	@SuppressWarnings("unchecked")
	public Collection<Usuario> findByName(String nome) throws DAOException{   
	        Criteria c = session.createCriteria(Usuario.class);   
	        c.add(Restrictions.like("nomeUsuario", "%" + nome.toUpperCase() + "%"));   
	        c.addOrder(Order.asc("nomeUsuario"));   
	           
	        return (Collection<Usuario>) c.list();   
	    }  


}

}
Criado 15 de setembro de 2009
Respostas 0
Participantes 1