Não é sempre que temos a necessidade de construir uma aplicação de nível empresarial, que requer um maior esforço e mais tempo para se construir. Em alguns casos, queremos desenvolver algo simples como, por exemplo, um micro blog pessoal, sem precisar se preocupar em ter que escalar a aplicação em todas as direções.
Muitas vezes queremos apenas algo rodando em produção em poucos minutos. Entretanto, depender de um servidor web Java, como o Tomcat, requer um trabalho nas partes de configuração, manutenção e deployment do projeto. Nestes casos, usar um servidor Jetty embutido facilita bastante a vida do desenvolvedor, principalmente na hora da execução da aplicação.
Outra parte do projeto que também costumamos investir bastante tempo é na camada de acesso ao banco de dados. Neste contexto, o MongoDB é uma solução que se destaca quando buscamos produtividade e performance. Um dos seus principais objetivos é manter o foco do desenvolvedor nos objetos da aplicação. Outro diferencial do MongoDB é que sua estrutura segue o modelo Schemaless, ou seja, o banco de dados não tem controle sobre a estrutura dos dados como, por exemplo, o nome das colunas e/ou a quantidade de colunas que um documento pode ter.
Além disso, para permitir uma maior performance, principalmente em ambientes distribuídos, o MongoDB não oferece algumas das principais funcionalidades encontradas no mundo SQL, como joins e transactions. Sendo assim, quando necessário, é de responsabilidade da aplicação viabilizar e controlar essas funcionalidades.
Com base nestas informações, veremos neste artigo como utilizar o Spark Framework para construir um micro blog completo. Para isso, adotaremos, além do framework Spark, o MongoDB, que, juntos, possibilitam criar aplicações web com o menor esforço possível, trocando funcionalidades empresarias, como controle de transações, por facilidade e agilidade. Neste cenário, como um importante complemento, veremos também como adotar o FreeMarker para gerar templates HTML.
Conhecendo o MongoDB
O MongoDB é um banco de dados NoSQL orientado a documentos que armazena arquivos no formato BSON, que de forma simples pode ser definido como uma versão binaria de um arquivo JSON.
No MongoDB chamamos de collection as estruturas que são parecidas com as tabelas dos bancos relacionais. Já os dados que são inseridos nestas coleções são chamados de documentos. Estes documentos, por sua vez, são formados por um mapa de chave/valor, onde cada chave seria como se fosse uma coluna de uma tabela.
Além disso, cada documento contido em uma coleção deve possuir obrigatoriamente uma chave única chamada _id, que funciona da mesma forma que uma primary key de um banco relacional. Por padrão, a chave _id é gerada automaticamente pelo MongoDB. No banco de dados MySQL, uma situação similar ocorre quando selecionamos a opção AUTO_INCREMENT na criação de uma PK.
Assim como em uma tabela, uma coleção serve para guardar documentos que são comuns entre si, como uma tabela Usuarios, que possui colunas referentes à entidade Usuario, como nome, email e senha. Contudo, o MongoDB não possui um Schema para os dados que estão sendo inseridos nas coleções. Isso significa que é possível, por exemplo, guardar documentos referentes a posts de um blog em uma coleção de Usuarios. Porém, isso é uma péssima prática e apenas dificultará a recuperação dos dados do banco.
Deste modo, normalmente precisamos ter diversas coleções em uma aplicação. Este conjunto de coleções é mantido por um container físico denominado database que, por sua vez, é análogo a um também chamado de database do mundo relacional. Na maior parte dos casos, em um banco MongoDB temos um database para cada aplicação.
Contudo, as duas principais qualidades do MongoDB são a alta produtividade e a possibilidade de lidar com Big Data, pois assim como a maioria dos bancos NoSQL, este já foi criado com o intuito de ser facilmente configurado em um ambiente distribuído.
Introdução ao framework Spark
De acordo com a própria descrição do site do Spark, este framework foi fortemente inspirado no Sinatra, uma DSL (vide BOX 1) que permite criar aplicações web em Ruby com o mínimo esforço, sem ter que se preocupar muito com configurações e boilerplate code (vide BOX 2), como quando utilizamos o Spring MVC.
DSL, ou Domain-Specific-Language, é um tipo de linguagem de programação dedicada a um domínio de problema particular, especifico para um cenário. O SQL, por exemplo, é uma DSL para consultas em bancos de dados relacionais. Neste caso, o problema seria a consulta e o domínio do banco de dados relacional.
São códigos que sempre temos que escrever quando desenvolvemos alguma coisa. Por exemplo: no Spring MVC, temos que escrever uma configuração padrão no arquivo web.xml, sendo que na maioria das vezes, é exatamente o mesmo código, exceto por algumas pequenas diferenciações.
O Spark é um framework de código aberto que serve como uma alternativa aos diversos frameworks de desenvolvimento de aplicações web em Java, como JSF, Spring MVC, Play Framework, entre outros. Por padrão, ele roda em um servidor Jetty embutido, mas pode ser configurado para ser executado em qualquer servidor web como, por exemplo, no Tomcat.
A arquitetura de um software feito com o Spark Framework segue o padrão MVC, onde separamos a aplicação em no mínimo três camadas (Modelo, Visão e Controle). Seu principal objetivo é separar a informação e as regras de negócio da interface com a qual o usuário interage.
Um dos poucos códigos boilerplate de uma aplicação desenvolvida com Spark é a configuração das rotas. A rota é um componente responsável por transformar cada entrada HTTP, que chamamos de request, em uma ação, a qual pode ou não retornar uma resposta. Cada rota é constituída de três partes principais, a saber:
- Verbo: Um verbo definido pela especificação HTTP, como GET, POST, PUST, DELETE;
- Callback: Uma função que recebe uma request e uma response e retorna uma String que pode ser utilizada por engines de templates para renderizar páginas HTML;
-
Caminho: O caminho se refere ao endereço de rede que, quando acessado, ir ...
Quer ler esse conteúdo completo? Tenha acesso completo
Confira outros conteúdos:
Por Diego Em 2015Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado! Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um Full-Stack Dev!Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.
Aceitar