Por que eu devo ler este artigo:Apresentaremos neste artigo como construir um sistema com alta qualidade, produtividade e escalabilidade utilizando como ponto de referência o padrão arquitetural MVC.

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 ... 

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

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
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora