Você está na página 1de 4

Gostaria de discutir a forma em que estou construindo meu sistema Swing em camadas.

Bom, a tempos atrás estava eu procurando uma forma de fazer o mapeamento objeto-
relacional
até que me deparei com este artigo
e gostei da forma de mapeamento.

Bom, mas a partir desta forma de mapeamento, eu comecei a bolar uma forma de para
melhor me adaptar.
Vou colocar um exemplo, para que fique mais clara a forma em que estou desenvolvendo:

Por exemplo no cadastro de usuários.Tenho minha classe(bean) Usuario:

view plaincopy to clipboardprint?


1. public class Usuario{
2. private int iCodigo;

3. private String sLogin;

4. private Sring sSenha;

5.

6. //Métodos get set simples

7. //...

8. }

uma interface para o DAO:

view plaincopy to clipboardprint?


1. public interface IUsuarioDAO{
2. void incluir(Usuario usuario) throws MinhaExcecao;

3. void alterar(Usuario usuario) throws MinhaExcecao;

4. void excluir(Usuario usuario) throws MinhaExcecao;

5.

6. boolean valida(Usuario usuario) throws MinhaExcecao,


UsuarioNaoEncontradoException;

7. ///...

8. }

o DAO:

view plaincopy to clipboardprint?


1. class UsuarioDAO implements IUsuarioDAO{
2.

3. private static UsuarioDAO usuarioDAO = new UsuarioDAO();


4.

5. private UsuarioDAO{

6. }

7.

8. public void incluir(Usuario usuario){

9. .

10. .

11. .

12. }

13.

14. public void alterar(Usuario usuario){

15. .

16. .

17. .

18. }

19.

20. public void excluir(Usuario usuario) throws MinhaExcecao{

21. .

22. .

23. .

24. }

25.

26. public static UsuarioDAO getInstancia(){

27. return usuarioDAO;

28. }

29.

30. //...e por aí vai...

31. }

Minha classe de negócio,

view plaincopy to clipboardprint?


1. public class CadastroDeUsuarios{
2. private IUsuarioDAO usuarioDAO =
FactoryUsuarioDAO.getInstancia().getDAO();
3.

4. public void gravar(Usuario usuario){

5.

6. }

7.

8. public void excluir(Usuario usuario) throws MinhaExcecao{

9. usuarioDAO.excluir(usuario);

10. }

11.

12. }

E minha Factory:

view plaincopy to clipboardprint?


1. class FactoryUsuarioDAO{
2. private static FactoryUsuarioDAO factoryUsuarioDAO
= new FactoryUsuarioDAO();

3.

4. private FactoryUsuarioDAO(){

5. //Carrega informações de qual DAO deve ser carregado em um properties


ou XML

6. }

7.

8. public IUsuarioDAO getDAO(){

9. //faz os testes e retorna a instancia a ser usada

10. return UsuarioDAO.getInstancia();

11. }

12.

13. public static FactoryUsuarioDAO getInstancia(){

14. return factoryUsuarioDAO;

15. }

16. }

Bom daí o que faço:

No meu view(JFrame, JInternalFrame e etc...), instancio um objeto do tipo


CadastroDeUsuarios(que aplico as regras de negócio), que por sua vez obtém através do
Factory o DAO que faz as operações no banco.Por enquanto não estou trabalhando com ele
distribuído, mas caso venha, crio uma interface para a classe de cadastro(Business).

Bom, as vezes acho que estou escrevendo demais, mas me parece que é assim
mesmo.Gostaria que dessem suas opniões para discutirmos se
está bom e se não qual é a melhor forma.

Você também pode gostar