BO Generico?

Pessoal,
Boa tarde.

Hoje, tentei fazer uma implementação para agilizar ainda mais o ambiente de desenvolvimento e cheguei a uma conclusão que seria interessante ter uma parte da regra de negocio de forma generica.

Ex: Listar tudos (um namedquery resolve as condições do tipo SN_ATIVO, TP_Status, etc)
Listar Produto com base em Like no nome, etc…

Então, hoje tenho um DAO generico que funciona tranquilo.
pensei em também fazer um BO generico para me auxiliar.

Para ter acesso ao banco, chamo uma instancia do DAO que é uma classe que extend de um DAO

Dentro do meu BO, acesso meu DAO desta maneira

FornecedorDAO fornecedorDAO = new FornecedorDAO(entityManager);
FornecedorVO f = fornecedorDAO.getById("cdFornecedor", fornecedorVO.getCdFornecedor());

Logo, para conseguir fazer o meu BO generico, eu teria que, além de criar meu BO generico e dentro do BO generico, ele instanciar o generico para a entidade que estou trabalhando (complicado 8) )

Apos alguns N testes, estou recebendo o seguinte exception

sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)

Segue o código que estou trabalhando

public abstract class GenericBO<T, K extends GenericDAO<T>> implements IGenericBO<T> {
	
	private Class<K> daoBeanType = (Class<K>) GenericDAO.class;
	private Class<K> daoGenerico;
	private Constructor<K> ct;
	private Class<T> entityBeanType;

	@SuppressWarnings("unchecked")
	public GenericBO(String persistenceUnit) {
		this.entityBeanType = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; //informando ao meu BO generico qual entidade estou trabalhando
		try {
			ct = daoBeanType.getConstructor(EntityManager.class); //informando o construtor
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		}
	}
	
    public Class<T> getEntityBeanType() {
        return entityBeanType;
    }
	
	public List<T> listAll() { //pequeno exemplo de como estou chamando meu DAO Generico dentro do BO Generico
		try {
			EntityManagerFactory emf = getEntityManagerFactory();
			EntityManager em = emf.createEntityManager();
			EntityTransaction tx = em.getTransaction();
			
			tx.begin();
			K daoGenerico = ct.newInstance(em);
			List<T> lista = daoGenerico.getListAll();
			
			emf.close();
			return lista;		
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}

Alguém tem alguma sugestão do motivo pelo qual estou recebendo esse exception?

java.lang.InstantiationException at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.bo.GenericBO.listAll(GenericBO.java:59) at com.service.FacadeService.pesquisaAgrupamento(FacadeService.java:96)

Cara Isso é sério? Você ainda usa EJB 2.0? Já é ruim utilizar BO dai criar um BO Genérico?!

Isso não é trollagem não, mas pô BO era necessário quando se utilizava os entity beans no EJB 2.0. Isso é um padrão que morreu, só falta enterrar!

Da uma lida aqui e aqui

[quote=x@ndy]Cara Isso é sério? Você ainda usa EJB 2.0? Já é ruim utilizar BO dai criar um BO Genérico?!

Isso não é trollagem não, mas pô BO era necessário quando se utilizava os entity beans no EJB 2.0. Isso é um padrão que morreu, só falta enterrar!

Da uma lida aqui e aqui[/quote]

x@ndy, sistema é legado. não tenho como mudar isso.

[quote=RodrigoValentim][quote=x@ndy]Cara Isso é sério? Você ainda usa EJB 2.0? Já é ruim utilizar BO dai criar um BO Genérico?!

Isso não é trollagem não, mas pô BO era necessário quando se utilizava os entity beans no EJB 2.0. Isso é um padrão que morreu, só falta enterrar!

Da uma lida aqui e aqui[/quote]

x@ndy, sistema é legado. não tenho como mudar isso.[/quote]
Sinto muito então, mas a meu ver se o sistema é legado e está assim, não é isso que vai “agilizar” o desenvolvimento e sim uma migração gradativa para um arquitetura melhor!