Beleza galera?
Estou desenvolvendo uma aplicação que hoje é simples, um software de gestão de loja via web.
Como disse hoje é bem simples mas, espero que com o tempo ela se torne bem complexa.
Pra poder desacoplar bem a view da camada de negócios e a camada de acesso a banco eu fiz o seguinte:
Criei uma camada dao com uma classe abstrata onde eu coloquei a conexão com o banco e criei uma unica interface que coloquei todas os metodos que serão visiveis. Para instanciar os daos criei uma classe que chamo de DAOFactory que instancia um dao por reflection e que recebe o nome da classe por uma string no construtor.
Na camada de negócio eu fiz o mesmo, criei uma classe abstrata que serve pra instanciar a DAOFactory e tem um método onde passo por parametro o nome da classe dao e que me retorna a instancia do dao que pedi. Eu pego o nome da classe dao em um arquivo properties. Criei também uma interface da mesma forma que no dao, e esta interface tem os métodos que serão visiveis. Para acessar essas classes também criem uma classe que chamo de BOFactory e da mesma forma que no dao eu instancio uma classe de negocio por reflection atraves do nome da classe que está um um string que o construtor recebe por parametro.
Por fim, meus Actions acessão um delegate onde eu coloco os métodos que meus actions precisam, e no construtor desse delegate eu instancio as classes de nogócios pela BOFactory pegando o nome da classe em um outro arquivo de configuração…
O que achão? Ficou muito confuso?
Eu fiz desta forma, porque se amanhã ou depois eu migras pra session bean, imagino que essa migração não será muito traumática, e se tiver que mexer na camada de acesso a dados, como , migrar pro hibernat também a meu ver não seria muito traumático.
Aguardo a opinião de vocês.
Obrigado!