Paginação de Datatable Lazy com JSF (Primefaces)

Olá, tudo bem?

Vamos ver hoje como fazer uma paginação de um datatable JSF utilizando o modelo lazy em um managed bean de view scope. Quantos termos complicados em uma frase apenas.

Existem diversos frameworks JSF hoje no mercado que nos fornecem datatables prontos com paginação, ordenação e outras mais vantagens. Iremos utilizar como exemplo hoje o datatable do Primefaces.

É comum o datatable pegar todo a lista a ser exibida e alocar na sessão do usuário do servidor. Esse ato de alocar tudo na memória tem um impacto direto no desempenho do nosso servidor; cada usuário que exibir um datatable desse modo estará alocando mais espaço na memória do servidor.

Para ficar um pouco mais parecido com a vida real, no post de hoje será utilizado JPA e o HSQLDB como banco de dados, realizando as consultas com JPQL.

Ao final do post você irá encontrar o link para download do código fonte.

Iremos utilizar:

  • JSF 2.0 – Implementação JBoss 7
  • JBoss 7.1 – o tema proposto nesse post se aplica a qualquer servidor
  • Eclipse Indigo
  • JPA 2.0 – Implementação JBoss 7
  • HSQLDB (2.2.8) – O HSQL é um banco que roda na memória, apenas para facilitar nossa configuração.
  • Primefaces 3.2

Só para esclarecer, esse post não visa boas práticas ou colocar as devidas camadas de padrões de projetos. Pretendo apenas mostrar como aplicar paginação sem utilizar um managed bean de sessão.

Lazy JSF Datatable Pagination (Primefaces)

Hello, how are you?

Today we will do JSF datatable pagination with a Lazy List with a view scoped managed bean. What all those words/expressions mean?

There are several JSF frameworks today that provide datatables with a ready pagination, columns sorter and others functionalities. Today we will use the Primefaces datatable.

Usually the datatables will put the displayed List, with the entities, inside the user http session. Increasing the objects inside the user session will have a direct impact on the server performance; each user that displays a datatable,  that keeps a list in the session, will be allocating more and more memory in the server.

To look like real life, our post will use JPA and HSQLDB as database, and we will use JPQL to query the data.

In the end of this post you will find the link to download the source code.

We will use:

  • JSF 2.0 – JBoss 7 Implementation
  • JBoss 7.1 – the code of this post should be applied to all servers
  • Eclipse Indigo
  • JPA 2.0 – JBoss 7 Implementation
  • HSQLDB (2.2.8) – The HSQL it is a memory database, it will be easier to run it.
  • Primefaces 3.2

This post is not about good development practices nor about adding classes layers of project modeling. I just intend to show how to do a pagination without a session managed bean.