Duvida sobre arquitetura de sistema

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!

Legal, só tome muito cuidado com uso de reflection, pois é um processo extremamente lento e que pode afetar muito o desempenho da sua aplicação.

Valeu pela opnião cara!

Mas no caso o que acha melhor que eu use pra diminuir as dependencias entre as camadas?

Eu acho que tá legal, mas tem factories demais. Que tal dar uma olhada no Spring Framework ? se você utilizar um pouco de IoC você conseguirá gerenciar melhor as dependências.

E o Spring ainda possui suporte a desenvolvimento de DAOs em JDBC. Vale a pena dar uma olhada.

fala aí Guilherme Mello, beleza?
Acha que springs é aconselhavel pra usar em aplicações menores ou só pra grandes?

Já que o objetivo é permitir que a aplicação cresça sem maiores problemas, porque nao utilizar Spring desde agora? :lol:

alem do framework de ioc, ainda tem as classes wrappers para jdbc o que tmb ajudaria bastante a reduzir algumas linhas do seu código.

e falando nisso, porque nao hibernate? :lol: