Boa noite,
Eu estou com problemas para compreender esses três padrões, neste site http://www.javabuilding.com/architecture/arquitetura-com-domainstore-repositorio-e-query-object.html?page=1 é mostrado a interface DomainStore e a classe AbstractRepository, mas onde eu implemento a persistência? Pelo que eu entendi no repositório é onde vai minha lógica de negócio, ou seja, a implementação das minhas pesquisas específicas, mas onde vai a implementação do metodo save()?
Pelo que eu entendi lendo os comentários desse blog https://sergiotaborda.wordpress.com/desenvolvimento-de-software/java/do-dao-ao-domain-store/ em especial o comentário do Daniel Bussade do dia 2008/05/08 às 18:31 juntamente com a reposta do meu xará , o blog da caelum http://blog.caelum.com.br/possibilidades-de-design-no-uso-do-seu-generic-dao/ e este outro blog http://www.rponte.com.br/2009/06/08/no-more-daos/ de alguma forma eu esta usando estes padrões (DomainStore, Repository e Query Object) inconscientemente. Porque normalmente eu crio da seguinte maneira:[/quote]
public interface Dao<T, I> {} //Um CRUD simples save (T t), delete(T t), getById(I id) e getAll()
public abstract class AbstractDao<T, I> implements Dao<T, I> {} //Aqui eu faço a implementação para meu ORM (Hibernate)
public interface EstadoDao extends Dao<Estado, Long>{} //Aqui eu coloco somente buscas especificas. Ex: produzMelhorCafe();
public class EstadoDaoImpl extends AbstractDao<Estado, Long> implements EstadoDao {} //Aqui eu faço a implementação das buscas.
public class Estado implements Serializable {} // A entidade Estado
Eu também dei uma lida nestes sites:
http://thinkinginobjects.com/2012/08/26/dont-use-dao-use-repository/
http://www.guj.com.br/java/249971-padrao-repository
http://www.guj.com.br/java/289087-repository–dao/2
http://www.guj.com.br/37279-dao-vs-repository-pattern
http://www.guj.com.br/java/125666-repository-exemplo-pratico
http://www.guj.com.br/java/231647-opinioes-implementacao-do-padrao-repository
http://www.guj.com.br/java/74015-diferenca-entre-repository-e-dao
Mas ainda sim tá difícil entender. Alguém poderia me dar um exemplo usando meu exemplo acima?
PS: Tive que desabilitar os links no texto por que não tava conseguindo formatar.