Padrão para desenvolvimento

public class Teste{
	public static void main(String[] args) {
	   new Funcao(2, "Educação").salvar();
	}
}


public class Funcao {
	private int idFuncao;
	private String dsFuncao;
	
	public void salvar(){
		FuncaoBD funcaobd = new FuncaoBD(this);
		funcaobd.salvar();
	}
	
	public Funcao(int idFuncao, String dsFuncao){
		this.idFuncao=idFuncao;
		this.dsFuncao=dsFuncao;
	}
	
	public int getIdFuncao(){
		return idFuncao;
	}
	
	public String getDsFuncao(){
		return dsFuncao;
	}
}


class FuncaoBD{
	private Funcao _funcao;
	
	FuncaoBD(Funcao funcao){
		_funcao = funcao;
	}

	void salvar() {
		System.out.println("salvando no banco de dados a função: "+_funcao.getDsFuncao());
		
	}
}

Pessoal, eu estou muito confuso com tantos padrões, com tantas camadas, com tantos pacotes… (sou apenas um recém nascido no mundo java)
Escrevi esse codigo acima, mas não sei se segue algum padrão. Pois dá pra fazer a mesma coisa de várias formas diferentes.
Primeiro eu vi a forma de desenvolver com Classe, ClasseVO, ClasseBO e ClasseDao; Mas rapidamente vi que a comunidade está abolindo esse padrão.
Depois vi o tal do DDD, pacotes por caracteristicas, entre outros…

Pra mim está tudo parecendo QUASE a mesma coisa, somente com poucos detalhes diferentes e com nomes diferentes.

Na verdade, eu poderia ter somente uma Classe Funcao com os atributos e todos os métodos gets e de salvar, deletar, entre outros dentro da minha própria Classe Funcao.

Este post está parecido com um que deixei a pouco tempo e o que vejo é muita teoria, gostaria de ver mais código, para entender melhor. Não quero a solução para a minha aplicação, quero ter um norte para seguir.

Posso continuar da forma acima? Tem mais alguma classe envolvida neste meio? Ou escrevi um monte de besteira no código acima? O que eu realmente queria saber é: dentro do pacote por caracteristica, tenho as classes que definem minhas camadas e padrões, mas quais são todas as classes, Interfaces, repositorio, DAO, fachadas? Gostaria só de um exmplo que fosse da visão (que seria a classe Teste acima) até gravar no banco de dados.

Abraço a todos!

Eu recomendo usar uma classe para o seu modelo (sem sigla de VO nem nada)… tipo

public class Aluno {...}

e outra classe para ser o DAO

public class AlunoDAO {...}

que terá os métodos de acesso a dados… criar salvar excluir… etc

Melhore os nomes dos atributos também

private int idFuncao; private String dsFuncao;

    private int id;  
    private String descricao; //descreva o que é ds... não coloque siglas...

Então a Aluno somente terá seus atributos e metodos gets e sets?
E a AlunoDao vai implementar o acesso ao banco?
Pra mim esse ainda continua sendo o padrão DAO, só tirei o VO do nome da classe Aluno.

E onde fica o controle, na AlunoDao?

Abraços!

Exatamente Wesley… é isso mesmo

O controle fica em outra classe… AlunoController… ou AlunoCRUD…

Não necessariamente.

Se vc quer um domínio rico, Aluno deve implmentar métodos de negócio referente a alunos no seu domínio.

AlunoDao fica na camada de persistência, então alguém vai chamar o DAO e passar o objeto de domínio pra ele.

Não é legal colocar classe de acesso a dados no objeto de domínio não. Até porque “salvar” não é método de negócio!