Aprenda a apresentar as listagens do seu sistema utilizando paginação por demanda e economize recursos do servidor de aplicação.
ArtigosJavaJava EE 7: Como recuperar listagens sob demanda
Como recuperar listagens sob demanda no Java EE 7
Imagine que você precisa criar uma aplicação que recupera um grande volume de dados e o exibe no formato de listagens. Para implementar esse requisito, temos duas abordagens: a primeira, considerada por muitos uma má prática, consiste em carregar todos os registros cadastrados no SGBD ao mesmo tempo e colocá-los em memória; já a segunda, bastante recomendada para listagens extensas, é aquela na qual recuperamos do banco de dados apenas os registros que estão sendo visualizados pelo usuário, ou seja, trazemos as informações sob demanda.
De forma intuitiva, sabemos que a segunda solução traz alguns benefícios para qualquer aplicação. Para demonstrar isso, criaremos um pequeno sistema Java explorando inicialmente a listagem em memória de uma grande quantidade de clientes cadastrados no SGBD. Em seguida, mostraremos como implementar a mesma operação utilizando a recuperação por demanda, para podermos comprovar as vantagens da segunda opção através da análise de apontamentos de performance e consumo de recursos. Autores: Pablo Bruno de Moura Nóbrega e Joel Xavier Rocha
Em geral, as
aplicações que desenvolvemos — sejam elas web, desktop ou mobile
— necessitam exibir listas de registros em tabelas. Essa é uma situação mais do
que comum para a maioria dos programadores. O problema surge quando a
quantidade de linhas a ser mostrada é muito grande. Nesses casos, colocar em
memória todo o volume de dados retornado do banco pode ser extremamente
perigoso, podendo inclusive derrubar a aplicação. Por esse motivo, precisamos
tratar com bastante atenção como devemos recuperar o conteúdo a ser exibido
para o usuário. Uma boa recomendação é dar uma lida em alguns artigos e
discussões na web bem relevantes sobre o assunto. Entre essas postagens,
podemos destacar “Avoid the Pains of
Pagination” e “The Impact of
Paging vs. Scrolling on Reading Online Text Passages” (consulte a seção Links para saber
onde encontrá-las).
No que se refere à
implementação da solução para o cenário descrito anteriormente, a estratégia
comumente adotada para exibir dados em tabelas é a primeira que mencionamos:
recuperar de uma única vez o conteúdo da base de dados, adicioná-lo em uma
coleção e, a partir dessa coleção, permitir que o usuário possa visualizar os
dados em uma tabela através de páginas, tendo cada uma delas uma quantidade
predefinida de registros. Essa abordagem é chamada de paginação em memória
porque os dados já estão todos disponíveis na RAM ou em disco (se a memória
virtual estiver sendo usada), mesmo que só uma parte dos registros esteja sendo
mostrada. Fica claro, no entanto, que esse cenário é considerado uma má
prática, pois pode consumir amplamente os recursos disponíveis do servidor de
aplicação.
Para resolver esse
problema, utilizamos o que chamamos de paginação por demanda, que consiste em
obter da base de dados apenas o conteúdo visível para o usuário, ou seja, os
registros que estão sendo mostrados na página. Assim, reduzimos largamente a
quantidade de memória consumida e o processamento envolvido na operação, pois
estamos criando um número pequeno de objetos por vez.
Neste artigo, veremos as duas implementações de listagem de dados descritas
em funcionamento através de um pequeno sistema que iremos criar envolvendo JSF
2.2, CDI 1.1 para injeção de dependências, EJB 3.2 na camada de negócio,
PrimeFaces 5.3 como biblioteca de interface rica, Facelets para utilização de templates (evitando
que dupliquemos código em nossas páginas) e Hibernate 5.0 acessando uma
base de dados no PostgreSQL. Além disso, o Maven será configurado para
gerenciamento das dependências, e nosso servidor de aplicação será o WildFly
10.0.0. Finalizando o conteúdo, analisaremos, através de gráficos e relatórios
gerados pelo VisualVM e pelo pacote de ferramentas do desenvolvedor do Google
Chrome, a diferença no consumo de recursos e no tempo de processamento entre as
soluções.
Iniciando nosso conteúdo teórico, teremos, neste
primeiro momento, uma visão geral dos dois principais frameworks envolvidos
na solução.
JavaServer
Faces 2.2
O JavaServer Faces
(ou simplesmente JSF) é um framework orientado a eventos lançado em 2004
que adota o padrão MVC (Model-View-Controller)
e atualmente se encontra na versão 2.2. É utilizado para a construção da
interface com o usuário e, graças aos seus componentes de tela e controllers
de utilização muito simples (chamados de Managed Beans), tem se consolidado como um dos frameworks mais
populares entre os desenvolvedores Java. Também contribuem para essa aceitação
o fato de ser um produto oficial Java EE e de apresentar um grande envolvimento
de usuários na especificação da JSR.
Na versão 2.2 algumas
inovações foram lançadas, como:
Adição de suporte
ao escopo FlowScoped;
Maior integração
com o CDI;
Melhoria no
suporte a HTML5;
Proteção contra
ataques do tipo CSRF (Cross-Site Request Forgery).
PrimeFaces 5.3
O PrimeFaces é uma biblioteca de código aberto que
possui diversos componentes adicionais aos já existentes no JSF. Foi lançado em
2008 por uma empresa turca especializada em desenvolvimento ágil, treinamento e
consultoria Java EE chamada PrimeTek. O framework conta com uma
comunidade bastante ativa e possui uma página de demonstração muito superior às
dos concorrentes.
Embora a versão gratuita da biblioteca seja a mais
popular, existem ainda dois planos de suporte diferenciados: o PrimeFaces Elite e o PrimeFaces Pro, que oferecem, entre
outras coisas, releases com melhorias e correções mais constantes que a
versão comunitária, acesso a temas exclusivos e um plano aperfeiçoado de
correção de bugs.
Na versão 5.3 as seguintes novidades estão disponíveis:
Mais de 100
correções feitas;
Lançamento do componente
Signature, que permite assinar
documentos em uma tela touchscreen;
Componentes Captcha e Carousel reescritos;
Design responsivo
aprimorado;
Componentes de
arrastar e soltar agora compatíveis com dispositivos móveis;
Acessibilidade
aperfeiçoada.
Criando a aplicação
Como dito anteriormente, faremos uma pequena aplicação para exibir clientes cadastrados em
um banco de dados. Nosso objetivo é implementar as duas formas de paginação que
comentamos anteriormente (em memória e sob demanda) e comparar os resultados.
Para criar o sistema, precisaremos dos seguintes softwares instalados:
Servidor de
aplicação WildFly 10.0.0 Final;
Eclipse Mars para
desenvolvedores Java EE;
Java Development
Kit 1.7;
SGBD PostgreSQL
9.5.
Após ter configurado todos
os softwares necessários, vamos primeiro criar o projeto Maven. Para isso, abra
o Eclipse e clique no menu File >New > Maven Project. Na
janela que surgir, marque a opção Create a simple project (skip archetype
selection) e clique em Next. Na próxima tela, insira no campo Group
Id o valor br.com.javamagazine, no Artifact Id o valor
paginacaojm, no Packaging o valor war e no Name o valor
paginacaojm. Em seguida, confirme no botão Finish. Observe que após esses passos, o
Maven criará um projeto que possui uma estrutura semelhante à mostrada na Tabela 1.
Diretórios do
projeto
Conteúdo
src/main/
java/
Classes Java.
resources/
Arquivos de
propriedades.
webapp/
Conteúdo
relacionado à parte web do projeto
(páginas, arquivos XML de configuração, etc.).
src/test/
java/
Classes de
testes unitários. No nosso sistema, não terá conteúdo.
resources/
Arquivos de
propriedades utilizados pelos testes. No nosso sistema, não terá conteúdo.
Oferta válida para todos os planos durante o mês de dezembro
+3 MESES
Grátis
Veja os resultado dos nossos alunos
Conquistas reais de quem está aplicando o método
<Perguntas frequentes>
Carreira
Por onde devo iniciar os estudos?
Recomendamos começar pelo Plano de Estudo Carreira Programador Front-End. Essa área da programação é mais visual e intuitiva, tornando-a ideal para iniciantes. No Front-End, você aprenderá a criar a parte visual dos sites, como layout, cores e interatividade. Depois de dominar o Front-End, você pode avançar para Programador Back-End, onde aprenderá a lidar com a lógica e o funcionamento interno dos sites, e, finalmente, para Programador Mobile, focando no desenvolvimento de aplicativos para smartphones. Nossa metodologia é estruturada de forma progressiva para garantir que você desenvolva confiança e experiência ao criar projetos reais, como sites estáticos e dinâmicos.
Em quanto tempo vou me tornar um programador?
O tempo necessário para se tornar um programador varia de acordo com a dedicação de cada estudante. Com nossa metodologia, que inclui um Plano de Estudo detalhado e suporte contínuo, você pode se tornar um programador de 6 meses a um ano, dependendo do seu ritmo e esforço. Nossa abordagem prática e orientada a projetos ajudará a acelerar seu aprendizado.
Eu preciso de um diploma de faculdade para começar a atuar como programador?
Não. Ser programador é uma excelente oportunidade para quem não possui diploma de faculdade. Muitas empresas contratam baseadas nas habilidades técnicas e experiência prática, não necessariamente em diplomas. Após conquistar uma vaga, você pode optar por complementar sua formação com um diploma.
Por que a programação se tornou a profissão mais promissora da atualidade?
A necessidade de programadores cresceu exponencialmente, especialmente após a pandemia de Covid-19, que forçou muitas empresas a se adaptarem ao digital. Com o crescimento das empresas de tecnologia, a demanda por programadores aumentou. Atualmente, há mais de 200 mil vagas abertas no Brasil devido à falta de profissionais qualificados.
Metodologia
Quais são os principais diferenciais da DevMedia?
Didática e Metodologia
Com mais de 20 anos de experiência, nossa metodologia foca em menos aulas e mais prática. Desenvolvemos dezenas de projetos e exercícios para ajudar você a se tornar um programador completo. Nossos projetos são desafiadores e autênticos, não apenas exercícios repetitivos.
Projetos reais e exercícios
Você desenvolverá diversos projetos práticos em cada carreira (Front-End, Back-End e Mobile), recebendo mentoria e suporte contínuo. A prática é essencial, e oferecemos milhares de exercícios para ajudar você a fixar o conteúdo e melhorar sua posição no ranking.
Suporte ao aluno
Nossa plataforma oferece suporte dedicado com professores experientes, respondendo suas dúvidas em menos de uma hora. Isso garante que você receba a ajuda necessária durante toda a sua jornada de aprendizado.
Gamificação
A DevMedia utiliza gamificação para tornar o aprendizado mais envolvente e motivador. Você acumula pontos e moedas por acertos, que podem ser trocados por produtos e customizações no seu card pessoal. Além disso, o sistema de ranking mensal incentiva a competição amigável e a melhoria contínua.
O que eu irei aprender estudando pela DevMedia?
Ao estudar conosco, você se tornará um programador Full Stack, dominando Front-End, Back-End e Mobile. Utilizamos a linguagem JavaScript, a mais utilizada no mercado, preparando você para criar sistemas webs e aplicativos celulares. Nossa abordagem prática inclui exercícios para fixar o conhecimento e desenvolvimento de projetos reais que te preparam, para o mercado de trabalho.
Quais as vantagens de aprender programação através da linguagem JavaScript?
Ela é Multiplataforma, ela vai te permitir programar para web e para celulares utilizando praticamente a mesma sintaxe.
Elá é Full Stack. Ela te permite criar aplicações Front-end, Back-end e Mobile. Isso acelera muito sua carreira e aumenta suas possibilidades de pegar trabalhos autônomos e conquistar uma vaga no mercado.
Ela é fácil de aprender. Como ela não exige conhecimento inicial em “Orientação a Objetos” ela se torna mais simples com uma curva de aprendizado suave e vai te permitir começar a programar mais rápido do que outras linguagens
A plataforma oferece certificados?
Sim, oferecemos dois tipos de certificados: o certificado de conclusão, que você adquire ao consumir o conteúdo, e o certificado de autoridade, que você obtém ao acertar exercícios. Ambos possuem carga horária, que pode ser utilizada para fins acadêmicos, como atividades complementares na faculdade, e também para comprovações em processos seletivos ou no seu currículo.
A plataforma tem suporte ao aluno, como funciona?
Sim, temos uma equipe de programadores pronta para ajudar com todas as suas dúvidas! Durante o horário comercial, o tempo médio de resposta é de até 10 minutos. E não se preocupe, também oferecemos suporte à noite e nos finais de semana, com um prazo de resposta um pouco maior.
A DevMedia me forma como programador Full Stack?
Sim! Oferecemos uma formação completa, do zero até Full Stack. Nosso foco é na prática, então você vai encontrar muitos exercícios e projetos reais ao longo do curso. Garantimos que você sairá com a autonomia necessária para desenvolver seus próprios projetos com confiança!
Tem horário para as aulas?
Não, não temos horários fixos para as aulas. Todo o nosso conteúdo está disponível para você acessar a qualquer momento, permitindo que você estude conforme sua própria disponibilidade e ritmo. Dessa forma, você pode integrar o aprendizado à sua rotina de maneira mais flexível e eficaz.
Por que a DevMedia não usa videoaulas em sua didática?
Nosso foco principal é formar programadores de verdade. Sabemos que o dia a dia de um programador envolve muita leitura, interpretação e escrita de código. Por isso, nosso conteúdo é desenvolvido para ambientar você nesse processo desde o início, proporcionando mais autonomia e acelerando seu aprendizado.
Na vídeo-aula é o professor que está lendo, interpretando e escrevndo o código para você, isso limita o seu progresso. Ao ler e interagir diretamente com o conteúdo, você exercita sua capacidade de leitura e concentração, além de poder avançar no seu próprio ritmo. Dessa forma, você se torna um programador mais independente e preparado para os desafios reais do mercado.
Preciso de um computador específico para estudar na DevMedia?
Não é necessário nada específico. Qualquer computador com processador atual e memória de 8 GB é suficiente.
Eu consigo estudar pelo celular?
Sim, a DevMedia possui um aplicativo que te permite seguir com seus estudos de qualquer lugar.
A DevMedia tem aplicativo?
Sim, nosso aplicativo está disponível na Play Store e na Apple Store, permitindo que você estude de forma prática e conveniente em qualquer lugar.
Preciso estar na faculdade para acompanhar os estudos na DevMedia?
Não, a faculdade não é necessária. Você não precisa de nenhum conhecimento prévio para iniciar os estudos na nossa plataforma.
Assinatura e Pagamentos
Quais são os planos de assinatura disponíveis?
Oferecemos o plano anual, o valor total é lançado no cartão de crédito, parcelado em 12 vezes, e você precisa dispor do valor total no limite do seu cartão. Você também pode optar por pagar no PIX
Adquirindo o plano, terei acesso a todo o conteúdo?
Sim, ao assinar nossa plataforma, você desbloqueia acesso total a todo o nosso conteúdo, sem precisar comprar nada separadamente.
A plataforma tem planos vitalícios?
Não, nossos planos são anuais, garantindo que você tenha acesso contínuo às atualizações mais recentes e aos novos conteúdos. A tecnologia evolui rapidamente, e um plano vitalício oferece um conteúdo estático que se tornará ultrapassado em pouco tempo. Com nossos planos anuais, você está sempre à frente, aprendendo as novidades e tendências mais atuais no mundo da programação.
A DevMedia tem fidelidade?
Sim, nosso plano tem uma fidelidade de 12 meses, o que garante o tempo ideal para você explorar nosso conteúdo e desenvolver a autonomia necessária para trabalhar com programação.
Como funciona o cancelamento?
Nós garantimos seu direito de cancelamento com reembolso total dentro dos primeiros 7 dias.
Para que você aproveite ao máximo seu investimento, oferecemos suporte personalizado para orientá-lo na utilização da plataforma. Também temos a opção de transferência de titularidade do plano, permitindo que outra pessoa aproveite o restante do seu período de assinatura.
Cadastro
Como excluir meus dados da plataforma?
Para excluir seus dados da plataforma, acesse o link : https://www.devmedia.com.br/fale-conosco/ e abra um protocolo de 'Exclusão de dados'. Nossa equipe processará a solicitação e removerá todas as informações do seu cadastro.
Compartilhe esse conteúdo com um amigo!
Faça login para ganhar recompensas.
Ou
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.