Criação de objetos e... o quão deselegante é não usar DAO ?

Antes de tudo, peguem leve comigo, são os meus primeiros MESES de Java ! ^^

Eu sou iniciante no Java, bem novato mesmo, e estou desenvolvendo um projeto Java Web (que, na verdade, é só um protótipo para um Curso Técnico).

Eu tenho uma classe Perfil com alguns atributos e métodos (vou resumir aqui) :

private String Nome;
private int CPF;
private String Email;
etc.

Eu li alguns conceitos básicos de OO e decidi deixar tanto o construtor quanto os metodos acessores e modificadores (get e set) privados.

Para que eu tenha uma instância dessa classe de Perfil, eu tenho dois métodos públicos e estáticos :
fazerLogin(String email, String senha);
(Aqui eu verifico se email e senha estão corretos, buscando os dados no banco, etc)

criarPerfil(String nome,etc);
(Uso esse método na Servlet de cadastro. Dentro dele, eu crio a lógica para acessar no banco e ver se já não tem um perfil igual cadastrado. Se estiver tudo ok, imediatamente insiro os dados no banco para que ele “exista” no sistema).

Esses são os únicos jeitos de se acessar o construtor, isso se todas as verificações estiverem ok. Primeiramente, isso que estou fazendo está “correto” ?

Então, sobre a DAO : Eu não estou usando… (Por isso criei esse tópico). Os métodos de inserção, atualização, etc, estão implementados diretamente na classe de Perfil. Ok, sei que isso é um péssimo jeito de programar…

Mas realmente há muito problema nessa prática ? O meu professor disse que não é necessário usar a DAO, contanto que eu documente tudo depois…

E, se for “necessário” usar DAO’s, como prosseguir? (sendo que os meus métodos de acesso estão privados e não faz muito sentido ùsar protected e fazer a DAO herdar de Perfil)

Novamente, estou lembrando que sou iniciante !

Não importa a sigla. Tenha uma classe que seja responsável pela manutenção da tabela de Perfil.

Em aplicações de pequeno porte o uso da classe DAO, a meu ver, é opcional pois não tem uma grande necessidade de clareza na manutenção, pois, se documentar bem não terá muitas dificuldades mas quando for desenvolver uma aplicação de grande porte é fundamental usar de design patterns e métodos de organização, como MVC, o DAO se inclui como um desses meios.
Eu prefiro usar DAO em minhas aplicações, acho que a manutenção fica bem mais simples, é um gosto meu.

Se usa com os atributos privados mesmo, sem necessidade de herança nesse caso, vai usar só associação de classes.

Sim… o que eu quero saber é se essa classe de manutenção / operações BD pode ser a própria Perfil

Ah ok… esses design-patterns eu ainda estou aprendendo… o problema é que os getters e setters estão privados também… então aquilo de :

inserirPerfil(Perfil p){

[preparedStatementObject].setString(1, p.getNome_Perfil());

}

não funcionaria…

Getters e Setters não recomendo serem privados, são os métodos de acesso aos atributos da classe. Caso queira fazer operações em outra classe ou montar algum método em outra classe seria inviável.

Pode sim, sem problemas, até estou com um projeto assim.

Poder pode, isso seria tipo o que chamam de padrão “active record”, mas sempre é melhor não fazer misturas.