Classe para Unidade e Classe para coletividade

E qual a diferença do DAO receber um XML ou um objeto com atributos?

HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHHAHAAHAHAHA… arf arf…HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAHAHAHAHAHAHAHAHAHAHAHA!!!

Entre gerar XML e passar um DTO é melhor a segunda opção que usa menos processamento.

Outra solução seria colocar os DAOs no mesmo pacote dos Domain models.


public class Funcionario {
    public void cadastrar() {
       FuncionarioDAO f = FuncionarioDAO.obterInstancia();
       f.salvar(this);
    }
}

abstract FuncionarioDAO{

    public static FuncionarioDAO obterInstancia() {
        return new FuncionarioHibernateDAO();
        //pode ser via parametro;
    } 

    public abstract void salvar(Funcionario funcionario);
}   


class FuncionarioHibernateDAO extends FuncionarioDAO
{
    public void salvar(Funcionario funcionario)
    {
        session.save(funcionario);
    }
}

class FuncionarioCacheDAO extends FuncionarioDAO
{
    public void salvar(Funcionario funcionario)
    {
        xyz.save(funcionario.codigo,funcionario.nome);
    }
}

A parte boa disso é que somente(±) o objeto de dominio consegue
ses persistir evitando que outra classe chame o DAO.

[quote=jprogrammer]Entre gerar XML e passar um DTO é melhor a segunda opção que usa menos processamento.

Outra solução seria colocar os DAOs no mesmo pacote dos Domain models.

A parte boa disso é que somente(±) o objeto de dominio consegue
ses persistir evitando que outra classe chame o DAO.

[/quote]

3- Solução … USAR HIBERNATE E PARAR DE BATER CABEÇA :twisted:

Parece a menos pior até agora.

package lipe.person

public interface Person
public class PersonImpl
protected class PersonDAO
protected class PersonView

Realmente… a minha idéia for surpreendente!!!

Bom… eu reinventei o DTO, né… :oops:

Quando eu for para o SunTechDays em 2006 eu vou subir no palco e contar pra todo mundo esta idéia brilhando! Daí quem sabe eu consigo ganhar a jaqueta do JAVA!!! :smiley: :smiley:

Bom… eu sei que aquela idéia horrível era um DTO. Por isso sugeri que fosse um framework que automatizasse a criação do DTO, para que o desenvolvedor não tivesse aquele trabalho horrível de criar e popular o DTO na mão!

Achei que se isso fosse gerado automaticamente por um framework, talvez valesse a penas, e não adicionaria tanta complexidade no código!

Exemplo:


public void dtoGeneratorExample() {

   Aluno aluno = new Aluno("Thiago", 22);
   AlunoDAO dao = new AlunoDAO();

   dao.save(XmlDTOGenerator.getXmlData(aluno));

}

Tá ai!!

Mas por favor! Se isso for ridículo, critiquem e me dêem um puxão de orelha!

Afinal, se eu tiver um mecanismo que gerasse o TO automáticamente não seria algo interessante. Ou ainda sim utilizar DTO em sua aplicação seria de certa forma uma comédia??? :wink:

Abraços!
Thiago Senna

Cara a gente já sabe do hibernate.
Será que vou ter que repetir mil vezes:
NA PRÁTICA NÃO TEM OUTRA COISA: HIBERNATE

Apenas estamos exercitando nossas mentes.
Esqueça nesse tópico que existe hibernate. Isso aqui é conceito.

Enquanto a ideia do LIPe realmente é mais ± isso que eu pensei.
Posta o código…

Jaqueta do Java, nao, mas um convite pro American Idol ou Show de Calouros, talvez :wink:

Sim, eh ridiculo. Toma um puxa de orelha.

Serializar dados em XML pra transferir de uma classe pra outra so pq vc nao sabe usar os mecanismos da linguagem eh tao desesperadoramente imbecil que eu nao sei nem como comecar a xingar voces dois (Thiago Senna, jprogrammer).

Cv referente o reflection na prática é amelhor idea.
Mas conceitualmente não é legal, pois exige uma certa gambiarra…
Tem O problema do SecurityManager e RunTimePermission.

Deixe a gente filosofar. Se a gente depois ganhar o premio NOBEL em Java não vamos dividir com vc… :lol:

[quote=cv] Sim, eh ridiculo. Toma um puxa de orelha.

Serializar dados em XML pra transferir de uma classe pra outra so pq vc nao sabe usar os mecanismos da linguagem eh tao desesperadoramente imbecil que eu nao sei nem como comecar a xingar voces dois (Thiago Senna, jprogrammer).[/quote]
Obrigado CV!

Então o motivo deste mecanismo ser uma bosta é por causa da serialização dos dados??? hummmmm… entendi!

Isso só confirma que se o DTO estiver de quatro, por cima, em baixo ou de ladinho ele sempre será uma bosta!!!

Acho q aprendi a lição!
Vou ver se arrumo outra piada para ganhar a jaqueta!

Abraços!
Thiago

[quote=renato3110]1) Se o campo é private, o DAO não tem acesso, certo?
2) Se fosse public, como é você que faz o DAO, você sabe o que não pode salvar, é VOCÊ determinando como persistir certo?
[/quote]

:oops: Acho que entendi o que tu tava querendo dizer… vou apagar da mensagem hehehehhe

[quote=cv]Sim, eh ridiculo. Toma um puxa de orelha.

Serializar dados em XML pra transferir de uma classe pra outra so pq vc nao sabe usar os mecanismos da linguagem eh tao desesperadoramente imbecil que eu nao sei nem como comecar a xingar voces dois (Thiago Senna, jprogrammer).[/quote]

Aí, o cv não tá parecendo o Pai Mei?? :lol: :lol:

jprogrammer, fiquei fritando meu cérebro e acabei chegando praticamente na mesma solução do artigo killing the getters and setters :expressionless:
E cara, mesmo usando Hibernate, há momentos em que, sem a arquitetura que estamos tentando atingir, getters/setters são necessários. Portanto, a discussão não está tão filosófica assim.

cv, vai pro pub relaxar :smiley:

Se quisermos ter uma arquittura decente temos que fritar mesmo o cérebro.
Agora se a gente pensar que replicando as entidades para as classes é programar OO vamos seguir em frente.
Eu tinha esse pensamento foi aqui no GUJ que fui me cataquizando…

O C++ tem uma papo de classes amigas, seria bom se o java tivesse isso.

Olá,

Concordo Rafael, “arquitetura generica” é um ninho de bugs e dor de cabeça. O cara NUNCA consegue mapear todas as possibilidades e sempre deixa abertura para os problemas.

PS.: Estou sem net entao meio atrasado nos topicos. :frowning:

]['s

[quote=jprogrammer]S

O C++ tem uma papo de classes amigas, seria bom se o java tivesse isso.
[/quote]

E tem… eh o “modificador” default (aka, nenhum modificador de acesso). (pelo menos foi o que a kathy sierra disse)

Rafael

Estou falando para pacotes diferentes.
Tavlez eu tenha falado bosta.
Naõ manjo muito de C++.

Não, selective export permite que você exponha determiandos métodos para determiandas classes. Assim você poderia expôr algumas consultas diretas á atributos pros DAOs, seme xpô-las aos clientes e sem bagunçar pacotes :wink:

Thiago… eu sei que vou me arrepender, mas…

olhe o pattern memento.

Shoes ainda bem que vc chegou ao tópico.
Fale mais sobre isso.
EDIT: me refiro ao selective export
Seria o ÉDEN.

Se possível post algum código.

[quote=Shoes] Thiago… eu sei que vou me arrepender, mas…

olhe o pattern memento.[/quote]

hehe… o nome desse pattern parece nome de sopinha! :lol: brincadeira!

Vou dar uma olhada sim Philip! Vou ver agora inclusive! Mas pq vc disse que se arrependeria?

Abraços!
Thiago

Pelo que eu entendi esse Memento não serve apenas para serialização.
Serve para externelizar os atributos sem ter que estruprar a classe.

Poderia então ter um DAOMemento ?

OBS: O problema é o nome do pattern.
Não tinha uma nome mais bonito ?