Bom dia pessoal. Estou integrando o Spring com o Hibernate e Struts e surgiu uma duvida a respeito da criacao do DAO generico. È o seguinte, eu tenho uma interface generica e uma classe generica DAO que realiza os CRUD . Todos os objetos concretos implementam e extendem esses genericos.
Como eu vou criar minha classe de servico pelo IOC dos DAO’s genericos para que eu possa efetuar os CRUD’s? Veja o que eu estava fazendo. Os servicos normais eu consigo resolver mas esses que devem efetuar operacoes como CRUD que foram implementadas pela classe DAO generica eu nao consegui resolver. Segue abeixo o meu esquema. Agradeco a ajuda de todos…
interface DAO generica.
public interface GenericDAO<T, ID extends Serializable> {
void salvar(T entity);
void apagar(T entity);
T consultarPorId(ID id);
}
Classe DAO generica:
public abstract class GenericHibernateDAO<T, ID extends Serializable>
implements GenericDAO<T, ID> {
private Class<T> persistentClass;
public SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public GenericHibernateDAO() {
this.persistentClass = (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
public Class<T> getPersistentClass() {
return this.persistentClass;
}
public void salvar(T entity) {
this.sessionFactory.getCurrentSession().save(entity);
}
public void apagar(T entity) {
this.sessionFactory.getCurrentSession().delete(entity);
}
public void update(T entity) {
this.sessionFactory.getCurrentSession().update(entity);
}
public T consultarPorId(ID id) {
T persistentClass = null;
persistentClass = (T) this.sessionFactory.getCurrentSession().get(
this.getPersistentClass(), id);
return persistentClass;
}
}
Classe e interface de Servico que usaria uma variavel DAO:
[code]
public interface GenericService<T, ID extends Serializable> {
void salvar(T entity);
void apagar(T entity);
T consultarPorId(ID id);
}[/code]
Classe Servico:
public class GenericServiceImpl implements GenericService {
// Esta classe deveria ter uma variavel do tipo GenericDAO
public void apagar(Object entity) {
}
public Object consultarPorId(Serializable id) {
// TODO Auto-generated method stub
return null;
}
public void salvar(Object entity) {
// TODO Auto-generated method stub
}
}
Todas as classes concretas extends da generica.
Como que é feito o IOC e as configuracoes nesse caso em especifico?