| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2008 17:59:07
|
dancas
Entusiasta Java
Membro desde: 09/10/2007 11:00:00
Mensagens: 23
Localização: São José dos Campos - SP
Offline
|
Boa tarde a todos!!
Preciso gerar um relatório com aproximadamente 50000 registros. Estou usando banco Oracle 9g, PL/SQL na query e a tabela consultada não tem relacionamentos.
O cache de segundo nível do hibernate está configurado da seguinte forma:
Mesmo com cache o hibernate não consegue trazer os dados.
Alguma sugestão?
This message was edited 2 times. Last update was at 21/01/2008 10:40:04
|
Danilo Alves |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2008 19:49:53
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
JDBC??? hehehehehe
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2008 20:38:11
|
Sergio Lopes
Moderador
![[Avatar]](/images/avatar/8232e119d8f59aa83050a741631803a6.jpg)
Membro desde: 17/11/2003 00:22:10
Mensagens: 1368
Localização: São Paulo - SP
Offline
|
ola!
o que quer dizer com 'nao consegue trazer os dados'?
se vc nao precisa ter todos os dados em memoria ao mesmo tempo, pode ir simplesmente pegando de pouco em pouco.
da uma procurada sobre StatelessSession e ScrollableResults. podem te ajudar...
sergio
|
Sérgio Lopes - twitter: @sergio_caelum - blog pessoal: sergiolopes.org
Curso Java | Apostilas Java | Arquitetura Java | Curso Rails |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 09:42:26
|
dancas
Entusiasta Java
Membro desde: 09/10/2007 11:00:00
Mensagens: 23
Localização: São José dos Campos - SP
Offline
|
Ele literalmente não consegue, dá uma olhada no código:
Vou dar uma pesquisada sobre StatelessSession e ScrollableResults.
|
Danilo Alves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 10:30:33
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
Tenta jogar a consult numa thread separada...provavelmente ambos (JDBC e Hibernate) vão demorar muito. Não vejo necessidade de trazer 50000 registros de uma só vez...se for para alguém ler ninguém tem essa capacidade e ainda q seja para outros objetivos vc poderia dar um select count(*) from tabela...dividir o total de registro e trazer em pedaços.
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 12:33:35
|
dancas
Entusiasta Java
Membro desde: 09/10/2007 11:00:00
Mensagens: 23
Localização: São José dos Campos - SP
Offline
|
Com scrollable results eu consegui obter os registros e passá-los para uma collection mas agora eu tenho que mandar esta collection para um relatório que é um jasper (JRBeanDataSource). Se eu mandar a collection inteira de uma vez ocorre o famoso: java.lang.OutOfMemoryError: Java heap space.
Vou procurar alternativas... se alguém tiver alguma sugestão, por favor habilite-se.
Muito obrigado Sérgio, obrigado a todos.
This message was edited 1 time. Last update was at 17/01/2008 14:20:15
|
Danilo Alves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 12:39:35
|
qmx
JavaGuru
Membro desde: 14/02/2007 10:49:14
Mensagens: 212
Localização: Sampa
Offline
|
vc fez o finetune da jvm ??
exemplo
1Gb de heap
java -Xmx1024GB....
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 13:31:47
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Relatório com 50 mil registros com Hibernate e Jasper?
Será que essa não é uma solução inviável?
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 13:33:19
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
http://www.javalobby.org/articles/hibernatequery103/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 13:35:58
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
danieldestro wrote:Relatório com 50 mil registros com Hibernate e Jasper?
Será que essa não é uma solução inviável?
Ou melhor....
Quem é que vai ler/averiguar/analisar um relatório de 50 mil registros ?
Não seria chuncho tecnológico sem fins de usabilidade ?
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 13:47:23
|
dancas
Entusiasta Java
Membro desde: 09/10/2007 11:00:00
Mensagens: 23
Localização: São José dos Campos - SP
Offline
|
nbluis wrote:
danieldestro wrote:Relatório com 50 mil registros com Hibernate e Jasper?
Será que essa não é uma solução inviável?
Ou melhor....
Quem é que vai ler/averiguar/analisar um relatório de 50 mil registros ?
Não seria chuncho tecnológico sem fins de usabilidade ?
Na hora que o responsável pelo projeto me pediu esse relatório eu também estranhei... mas ordens são ordens, ele disse que quer.
Vou experimentar o finetune como o qmx sugeriu e vou dar uma lida nesse artigo:
http://www.javalobby.org/articles/hibernatequery103/
This message was edited 2 times. Last update was at 17/01/2008 13:53:26
|
Danilo Alves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 13:52:32
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
O tal artigo que lhe passei do JavaLobby indica que você pode usar o Hibernate para recuperar os registros de forma paginada, de forma que você não precise ficar com os 50000 registros de uma vez na memória. Ele deu um exemplo com o JasperReports, mas a maneira de fazer sugere o que deve ser feito para sua solução de relatórios.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2008 13:55:01
|
dancas
Entusiasta Java
Membro desde: 09/10/2007 11:00:00
Mensagens: 23
Localização: São José dos Campos - SP
Offline
|
thingol wrote:O tal artigo que lhe passei do JavaLobby indica que você pode usar o Hibernate para recuperar os registros de forma paginada, de forma que você não precise ficar com os 50000 registros de uma vez na memória. Ele deu um exemplo com o JasperReports, mas a maneira de fazer sugere o que deve ser feito para sua solução de relatórios.
Vou ler este artigo, muito obrigado Thingol
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2008 15:13:34
|
dancas
Entusiasta Java
Membro desde: 09/10/2007 11:00:00
Mensagens: 23
Localização: São José dos Campos - SP
Offline
|
Implementei as soluções oferecidas pelo Hibernate (StatelessSession e Scrollable Results) utilizando a arquitetura sugerida no artigo. O autor propõe um acoplamento do Hibernate com o Jasper.. bem interessante.
A carga dos dados e o processamento do relatório realmente ficaram mais performáticos. Mas mesmo aumentando o heap da VM, ela não aguenta um relatório desse tamanho...
Estou estudando o "virtualizador de relatórios" do Jasper, se alguém souber de mais uma alternativa por favor manifeste-se.
|
Danilo Alves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2008 16:24:10
|
dancas
Entusiasta Java
Membro desde: 09/10/2007 11:00:00
Mensagens: 23
Localização: São José dos Campos - SP
Offline
|
Com o JRFileVirtualizer foi possível gerar o relatório mas vou fazer mais testes para ver se é estável.
|
Danilo Alves |
|
|
 |
|
|