Além disso, buscaremos também uma melhor extensibilidade para o sistema, o que pode facilitar tarefas de manutenção e adição de novos recursos, o que será auxiliado pela adoção do DAO. Com estas boas práticas o leitor terá ciência de novas opções que podem ser adotadas em praticamente qualquer aplicação web.
Com a chegada da era da informação a velocidade com que o mercado muda o rumo dos negócios cresce rapidamente, e para atender essa demanda, o comportamento empresarial também teve que se adaptar.
Diante disso, as empresas passaram a investir cada vez mais em tecnologias que potencializassem os seus negócios e os desenvolvedores, como consequência, começaram a adotar novos frameworks que possibilitassem a construção de sistemas web capazes de lidar com conteúdo mais dinâmicos, oferecer interfaces mais atraentes, maneiras mais amigáveis de navegar por suas páginas e que fossem capazes de se adaptar mais facilmente às mudanças.
Neste momento, os sistemas também passaram a lidar com quantidades cada vez maiores de informações, de forma que em situações extremas, tornou-se um importante requisito a gerência do uso da memória.
Pensando nisso, apresentamos na primeira parte deste artigo as técnicas de virtualização e paginação para geração de relatórios em sistemas Java, o que foi feito com o uso do JasperReports e do Hibernate.
Neste artigo, evoluiremos a estrutura do simulador quiz já desenvolvida, de modo que ao término da implementação ela se torne uma arquitetura de alta escalabilidade. Para isso, utilizaremos o padrão arquitetural MVC, onde organizaremos os principais componentes da aplicação em camadas (Modelo Visão Controlador).
Veremos também como implementar o padrão de projetos DAO, que isolará toda a camada de dados da aplicação, viabilizando assim uma melhora da extensibilidade do sistema.
Isso significa que o software terá uma maior capacidade de incorporar mudanças sem comprometer drasticamente outros elementos da arquitetura.
Finalmente, para que não precisemos administrar as transações em diversos pontos do sistema, centralizaremos o seu gerenciamento em um único lugar e deixaremos que o Tomcat se encarregue por este controle.
Criando o servlet de carga de dados
O leitor mais atento deve ter encontrado algumas ausências de imports em três listagens do artigo anterior. Vamos a elas:
- Na Listagem 8, atualize o import java.util.List para java.util.*;
- Na Listagem 12, adicione import java.util.Date;
- Na Listagem 17, adicione import br.com.javamagazine.simulador.domain.Pergunta.
Dando continuidade ao desenvolvimento do simulador quiz, implementaremos agora o servlet responsável por efetuar a carga automática dos dados da aplicação, que é um procedimento independente e necessário para o correto funcionamento do sistema.
Normalmente os dados seriam carregados dinamicamente via SGBD, mas para simplificar o exemplo, o faremos com recursos do Hibernate.
Para isso, utilizaremos o EntityManager, que possibilita executar operações com o banco de dados da mesma forma que o faríamos diretamente através de scripts SQL.
Sendo assim, crie um pacote de nome br.com.javamagazine.simulador.persistence e depois um servlet chamado InitServlet. Feito isso, substitua o código gerado pelo Eclipse para ficar semelhante ao da Listagem 1.
package br.com.javamagazine.simulador.persistence;
//imports omitidos...
@WebServlet(urlPatterns={"/pagina_inicial.xhtml"},loadOnStartup=1)
public class InitServlet extends HttpServlet {
private EntityManager em;
private EntityTransaction tx;
private Integer qtdeCargaBaseDados;
private Double porcentualAcerto;
public void init(ServletConfig config) throws ServletException {
this.em = HibernateUtil.getEntityManager();
this.tx = this.em.getTransaction();
this.qtdeCargaBaseDados = Integer.parseInt(config
.getServletContext().getInitParameter("qtde_dados_carga_base"));
this.porcentualAcerto = Integer.parseInt(config
.getServletContext().getInitParameter("porcentual_acerto_avaliacao"));
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
th ... Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.