Aggregates

Olá

Suponham que eu tenha em meu modelo as seguintes classes:

[code]package modelo.enquetes;

class Questao {
// Atributos, métodos, etc

Questao(String enunciado) {
    this.enunciado = enunciado;
}

}

package modelo.enquetes;

public class Enquete {
private List<Questao> questoes;
// Outros atributos irrelevantes para o exemplo

public Enquete() {
    List&lt;Questao&gt; = new ArrayList&lt;Questao&gt;();
}

public void novaQuestao(String enunciado) {
    questoes.add(new Questao(enunciado));
}

public void removerQuestao(int index) {
    questoes.remove(index);
}

}[/code]
Notem que Enquete e Questao formam um agregado. A manipulação de Questoes se dá apenas pela classe Enquete, e a classe Questao não possui visibilidade fora do módulo ( pacote ).

O problema é que dessa forma fica difícil criar um DAO para a entidade Questao, uma vez que essa classe não é visível para a camada de infra-estrutura ( os DAOs estão no pacote infra.persistencia ), não sendo possível assim instanciá-los e manipulá-los diretamente.

Algum de vocês já passou por isso? Como contornaram esse problema?

Abraços

A minha sugestão é que não coloque o objeto de persistência em um pacote separado. Ele poderá então acessar ambas as classes e manipular o que for necessário para garantir a persistência.
Afinal de contas se os objetos trabalham juntos pertencem no mesmo pacote. Forçar uma separação fictícia só porque parece bonita não tem utilidade e não é esse o propósito do conceito de pacote.

Pois é… Vou fazer isso mesmo.
Inclusive, tava lendo aqui no JavaPractices…

http://www.javapractices.com/topic/TopicAction.do;jsessionid=A37560B9E10339974EA28C66F392E879?Id=205

Obrigado.