Obrigado a todos pelas respostas.
rodrigoallemand:
Repositorios são utilizados como centros de acesso às entidades do seu sistema (que não necessariamente são entidades de banco de dados)
Rodrigo, suponha que tenho uma aplicação que guarde os objetos apenas em memória, sem nenhuma forma de persistência (ou seja, quando o aplicativo finalizar, tudo será perdido). Nesse caso, os DAOs não são mais necessários, apesar de os repositórios ainda o serem. Isso está correto?
rodrigoallemand:
É uma boa prática, criando um modelo de dominio, colocar as regras de negocio em outra classe que não seja o DAO. Isso pode ficar no repositorio (se vc utiliza-lo como classe) ou em um BusinessObject/Service/Manager e outras nomeclaturas existentes no mercado.
Lendo as várias discussões presentes no GUJ, tive acesso a links interessantíssimos, tais quais o texto do Phillip Calçado sobre BOs e VOs e o resumo de Domain-Driven Design (que por sinal ainda não terminei de ler), e pude inferir que manter a lógica de negócio em BOs, na verdade, pode não ser uma boa prática, uma vez que separa-se dados de comportamento. É isso mesmo ou a coisa não é bem por aí?
Outra dúvida: como assim utilizar o repositório como classe? O repositório seria uma interface? Se sim, suponho que a sua implementação seja o DAO... Mas aí, em tese, não poderei alocar a lógica de negócio no meu repositório. Da forma como eu estava pensando, eu teria algo do tipo:
public interface Repository<T> {
public List<T> obterDadosDeAcordoComAlgumaRegraDeNegocio()
}
public class EntidadeRepository implements Repository<Entidade> {
EntidadeDAO dao;
public EntidadeRepository() {
dao = new EntidadeDAO();
}
public List<Entidade> obterDadosDeAcordoComAlgumaRegraDeNegocio() {
List<Entidade> result = dao.getAll();
// Aplicar a lógica de negócio aqui, de acordo com a entidade em questão
return result;
}
Como podem notar, estou bastante confuso com relação a alguns conceitos... Agradeço os esclarecimentos.
Abraços