Arquivo

Posts Tagged ‘iReport’

Como evitar OutOfMemoryException ao gerar relatórios com o JasperReports

Aqui onde trabalho temos alguns relatórios muito pesados em sistemas grandes como Controle de Patrimônio e Controle de Estoque. Ao gerá-los em sua totalidade – sem a aplicação de um filtro que diminua a quantidade de informações retornadas – pode acontecer um estouro no Heap, pois, com pouco mais de 1 ano de utilização do sistema, há muitos dados cadastrados no banco de dados. A mensagem de exceção que aparece (todos que trabalham com desenvolvimento em Java já conhecem) é a seguinte: OutOfMemoryException: Java heap space.

Pesquisando um pouco na internet, descobri que há uma classe chamada JRFileVirtualizer que cria arquivos swap em disco, evitando que todas as informações sejam jogadas na memória e prevenindo que aconteça uma exceção do tipo OutOfMemoryException. A sua passagem para o relatório é feita de forma simples através do parâmetro REPORT_VIRTUALIZER.

Leia mais

Como passar a consulta dinamicamente para o JasperReports / iReport

Essa semana me deparei com um problema no trabalho que levei alguns minutos estudando a melhor solução. Eu tinha um relatório que deveria ser gerado com o JarperReports cuja consulta a ser realizada no banco poderia mudar constantemente, de acordo com o filtro que o usuário selecionasse na tela. Uma solução me veio à cabeça imediatamente: mandar um ArrayList para o JasperReports com o resultado da minha consulta para que ele preencha os dados. Essa solução é prática e fácil de implementar, mas esse ArrayList poderia ficar muito grande, visto que meu banco possuía muitas informações.

A melhor solução que encontrei foi passar a consulta inteira como parâmetro para o JasperReports fazer a consulta no banco. Para ilustrar como fazer isso, vamos aos passos abaixo:

Leia mais

Tutorial: Técnicas de Geração de Relatórios com JasperReports / iReport

Uma abordagem utilizando a ferramenta de design iReport

Por diversas vezes tenho me deparado com pessoas no CEJUG e em diversos fóruns Java com dificuldades na geração de relatórios com o JasperReports ou na utilização do iReport como ferramenta visual de diagramação dos documentos.

Foi então que tive a idéia de disponibilizar esse tutorial no meu blog que mostra como criar relatórios no iReport através de três técnicas: passando uma conexão com o banco de dados, passando um ResultSet (encapsulado na classe JRResultSetDataSource) e passando uma lista de objetos (encapsulada na classe JRBeanCollectionDataSource).

Além da demostração de como gerar os relatórios, mostro também o código Java correspondente de cada método, dou algumas dicas para modificar os textFields dos relatórios e outras de utilização do próprio iReport.

Resolvi também disponibilizar a aplicação que criei em JSF no formato zip e war. Bom proveito a todos.

Clique aqui para baixar o PDF do tutorial.

Clique aqui para baixar o projeto do Eclipse compactado (zip).
Clique aqui para baixar o projeto no formato war.