| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2009 14:43:29
|
Alexandre Gazola
JavaTeenager
![[Avatar]](/images/avatar/07845cd9aefa6cde3f8926d25138a3a2.jpg)
Membro desde: 23/07/2004 14:48:23
Mensagens: 176
Localização: Rio de Janeiro
Offline
|
Olá pessoal,
Queria um "insight" na seguinte situação (nomes das classes hipotéticos para simplificar): tenho um repositório de itens, que faz uso de um dao para acessar os objetos de uma tabela no banco de dados e converter os objetos retornados da tabela do banco para outros objetos de interesse para meu domínio. O DAO faz uso da JPA para mapear os registros do banco em objetos (ver código abaixo).
Agora, supondo que eu tenha milhões de registros no banco, esse código iria rapidamente incorrer num OutOfMemoryError. Uma saída seria utilizar paginação no DAO. Mas aí a interface do repositório também teria que fornecer um método para trabalhar com paginação, tirando a ilusão de que um repositório é "uma lista de objetos em memória". É isso mesmo? Alguma outra idéia de implementação?
abraços
|
Alexandre Gazola
Blog: http://alexandregazola.wordpress.com
"Que proveito tem o homem ganhar o mundo inteiro e perder a sua alma?" (Mc. 8:36)
"Buscai, em primeiro lugar, o Reino de Deus e a sua justiça, e todas essas coisas vos serão dadas por acréscimo" (Mt. 6:33) |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2009 16:14:41
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
Eu prefiro ser prático do que dogmatico... Se não poluir muito, coloca a paginação no Repository mesmo.
Se voce esta falando de Repository você deve estar falando de DDD.
No fim, aplicar DDD é ter um camada de dominio forte que reflete o dominio do negócio. Colocar um método findByXYZ com parâmetros de paginação não vai enfraquecer a sua camada de domínio.
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2009 18:04:44
|
cmoscoso
Virtual Machine Man
Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline
|
Repositorios vivem no dominio e sao utilizados por oturos objetos de dominio, se paginacao nao é um conceito existente no dominio nao vejo porque ter paginacao no repositorio.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2009 08:31:08
|
cmoscoso
Virtual Machine Man
Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline
|
Pensa assim..
Uma consulta, seja por 1 ou 1 milhao de itens, nao produz qualquer efeito observavel no dominio. Soma-se isto ao fato de ser uma demanda que nao sugiu de dentro do dominio logo nao vejo que seja responsabilidade para nenhum de seus objetos, e isto inclui o repositorio...
Na minha opiniao o mais pratico neste caso seria simplesmente o cliente acessar diretamente a persistencia, ignorando completamente o dominio.
This message was edited 1 time. Last update was at 08/04/2009 08:34:00
|
|
|
 |
|
|