Modelagem de projetos x Padrão de Projetos

Bem pessoal utilizo o seguinte padrão de desenvolvimento não eh muita coisa mais é +/- isso, queria entao saber como deve ser o modelo do meu projeto Utilizando UML e Iconix, como seria meu diagrama de robustez?? meu diagrama de classes??
OBS: Não utilizo nenhum framework!!!

pacote action
-AbstracAction
public abstract class AbstractAction extends HttpServlet implements Servlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
executar(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
executar(request,response);
}
abstract void executar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
}
Os meus Actions herdam de AbstractAction

pacote connection
responsavel pela conexão

pacote Dto
Contem classes com apenas os atributos e seus respectivos metodos getters and setters

pacote Dao
Contem uma Classe abstrata Chamada AbstractDao
public abstract class AbstractDao {
public AbstractDao() {
super();
}

	public ResultSet executeQuery(String sql) {
		ResultSet rs = null;
		String databaseFile = this.getClass().getClassLoader().getResource(
				"br" + File.separator + "gov" + File.separator + "caixa"
						+ File.separator + "salaSegura" + File.separator
						+ "conf" + File.separator + "database.properties")
				.getPath();
		try {
			Statement stmt = Conexao.getCONN(databaseFile).createStatement();
			rs = stmt.executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return rs;
	}
	public void executeUpdate(String sql, HttpServletRequest request)
				throws MyException {
		String databaseFile = this.getClass().getClassLoader().getResource(
				"br" + File.separator + "gov" + File.separator + "caixa"
						+ File.separator + "salaSegura" + File.separator
						+ "conf" + File.separator + "database.properties")
				.getPath();
		try {
			AuditoriaDao auditoriaDao = new AuditoriaDao();
			Statement stmt = Conexao.getCONN(databaseFile).createStatement();
			stmt.executeUpdate(sql);
			stmt.execute(auditoriaDao.getComandoAuditoria(sql, request));
		} catch (SQLException e) {
			e.printStackTrace();
			throw new MyException("Erro no método executeUpdate AbstractDao");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
e uma Interface
public interface InterfaceDao {

	public  void save(Object o, HttpServletRequest request) throws MyException;
	
	public  void update(Object o, HttpServletRequest request)throws MyException;

	public  void delete(Object o, HttpServletRequest request)throws MyException;

	public  Collection list()throws MyException;

	public  ResultSet getRSlist();
}	

Daí todos os meus Dao’s irão herdar e implementar estas duas classes.
Bem ainda tenho outros pacotes, mais os mais importantes são estes descritos acima - util, myexecption e conf
Ainda Utilizo o eclipse para desenvolvimento junto com Apache e o Tomcat. As paginas são claro JSP com validações JavaScript!

Bem baseado nisso como irei modelar meus projetos utilizando alem de OO o Iconix como processo?
Ex: Pessoa seria uma classe teria que criar tambem a Classe PessoaDao, PessoaDto e PessoaAction?
Ou simplesmente modelaria meu projeto normalmente com as classes normais e no desenvolvimento ou senao
no outros diagramas como o de sequencia e de robustez criaria os outros objetos como o de controler e os daos.

1º) Vc esta se conectando “na unha” ao invez de usar um datasource jndi

2º) Vc pretende usar esta interface DAO para todas as suas entidades?? Elas realmente só teram este tipo de método?

3º) Vc vai precisar de transação de banco de dados? Caso vá, vai precisar de uma camada de serviço para faze-lo.

4º) Uma entidade não precisa criar um action com o seu nome, na verdade as entidades nem precisam saber que actions existem.

5º)

throw new MyException("Erro no método executeUpdate AbstractDao"); 

Eu te aconselharia passar a exception origina para cima, o contrutor da excption aceita um throeble (sera que se escreve assim não lembro haha)

6º) Vc não vai ter autenticação nem validação de sessão nesta aplicação?

Esqueci desta:

public ResultSet getRSlist(); 

Não faça seu DAO retornar objetos de banco de dados! O DAO deve abstrair a fonte dos dados para aplicação

Pra que voce precisa de um DTO?

1º) Vc esta se conectando “na unha” ao invez de usar um datasource jndi
Só foi um exemplo esse parte de conexão nos refizemos.

2º) Vc pretende usar esta interface DAO para todas as suas entidades?? Elas realmente só teram este tipo de método?
Sim caso haja algo diferente será implementado em cada classe a parte.

3º) Vc vai precisar de transação de banco de dados? Caso vá, vai precisar de uma camada de serviço para faze-lo.
Isso não está sendo mais usado não.

4º) Uma entidade não precisa criar um action com o seu nome, na verdade as entidades nem precisam saber que actions existem.
Respondendo tambem ao pcalcado
Bem não entendi muito bem isso que vc disse mais o fluxo do meu sistema funciona assim:
Eu preencho um Dto no form como por exemplo UsuarioDto passo para o Action correspondente que no Meu caso seria UsuarioAction nele eu identifico o parametro passado que seria salvar recuperaria o Dto e o salvaria atraves de um dao ficaria assim usuarioDao.save(usuarioDto)

Lembrando que eu faço tudo na mão grande não utilizo nenhum framework

5º)
Code:
throw new MyException(“Erro no método executeUpdate AbstractDao”);
Isso vai ser melhorado tambem…

Eu te aconselharia passar a exception origina para cima, o contrutor da excption aceita um throeble (sera que se escreve assim não lembro haha)

Dê uma olahda nestes artigos:

http://fragmental.com.br/wiki/index.php?title=Main_Page

[quote=pcalcado]Dê uma olahda nestes artigos:

http://fragmental.com.br/wiki/index.php?title=Main_Page[/quote]
Ok! essas dicas acredito eu que não poderão ser implementadas nesse projeto será apenas para o proximo.
Só me responda uma coisa então isso tá muito feio?? rsrsrsrsrsr
Fazer desse jeito o sistema.

formCadastroCliente —&gt ClienteAction (recebe um DTO, VO qualquer coisa desse tipo) —&gt ClienteDao (por exemplo salva o objeto no banco)

Bem alem do que vc me mostrou. Vc teria algo há mais para me indicar para melhorar os meus projetos. E tambem em relação a modelagem do projeto vc teria algo pra me indicar??

No mais só tenho que agradecer pela atenção dada

Tá sim :roll:

Leia os artigos e procure aqui no GUJ uma lsita de livros indicados.