FJ-28 | Desenvolvimento Ágil para a Web 2.0 com VRaptor, Hibernate e AJAX
Construiremos uma aplicação completa em apenas vinte horas, utilizando inicialmente um banco de dados aberto com tabelas envolvendo relacionamentos.
Se você já compreende como funciona a API de Servlets e conhece algum controlador como Struts e camada de persistência como o Hibernate, esse curso, que é muito mais pragmático que teórico, aumentará em muito a sua produtividade Java EE.
Utilizaremos o conceito de DAO genérico, Ajax, validação com o Hibernate Validator e um sistema inteiro de autenticação e autorização. Entraremos a fundo nos detalhes do VRaptor 3, a última versão do framework.
Tudo isso com a metodologia de ensino bottom-up da Caelum e seus instrutores que desenvolvem e colaboram em alguns dos projetos open-source envolvidos no curso.
Você vai desenvolver uma aplicação que consiste na camada de acesso ao banco de dados com relações entre as tabelas, uso de critérios de pesquisa, validação, inversão de controle, sistema de log e formulários carregados de JavaScript e Ajax.
Informações
Carga Horária: 20 horas aula
Pré-requisitos: Curso FJ-21 ou : MVC, JSP, JSTL básico, Hibernate básico, Java 5 básico, Design Patterns DAO e Factory
Próximas Turmas
Conteúdo detalhado do FJ-28
O curso
- Objetivo do curso
- Sobre o curso: Hibernate, VRaptor, JSP e AJAX
- Onde posso aprender mais do VRaptor?
O sistema
- A necessidade do cliente
- Partes do projeto
Novo projeto
- Definindo as tecnologias
- Montando o ambiente de desenvolvimento
- Exercícios: montando o ambiente de desenvolvimento
- Exercícios: configurando o deploy da aplicação
Persistindo os dados com o Hibernate
- A camada de persistência do projeto
- Sobre o Hibernate
- Preparando o Hibernate
- Configurando o Hibernate
- Exercícios: Configurando o banco
Cadastrando Produtos
- Modelando um produto
- Anotando a classe %%Produto%%
- Exercícios - Modelando o produto
- Adicionando um produto no banco
- Exercícios
- Outras operações com produto
- Exercicios - outras operações com produto
- Discussão em sala - mais sobre o Hibernate
Refatorando
- Analisando o código atual
- Refactoring
- Aprendendo a refatorar
- Exercícios
- Comentários são sempre necessários?
- Refatorando para criar os DAOs
- Exercícios
- Discussão em sala
VRaptor
- Sobre o VRaptor
- Como instalar
- Como configurar
- Primeiro exemplo com o VRaptor
- Exercícios
- Redirecionando para uma view
- Exercícios
- Disponibilizando informações para a view
- Disponibilizando coleções para a view
- Exercícios
Criando o Controlador de Produtos
- Listando produtos
- Quais são minhas dependências?
- Injeção de Dependências
- Exercícios
- Cadastrando um produto
- Criando o formulário HTML
- Exercícios
- Redirecionar para listagem depois de adicionar
- Exercícios
- Atualizando e removendo produtos
- Exercícios
- Discussão em sala - VRaptor
Refatorando os DAOs
- Injeção de dependências no DAO
- Exercícios
- Analisando o código
- Escopos definidos pelo VRaptor
- Fechando a sessão do Hibernate
- Exercícios
Validando formulários
- Validator
- Exercícios
- Para saber mais: Hibernate Validator
- Exercícios Opcionais
REST
- O que é REST
- Características e vantagens
- O triângulo do REST
- Mudando a URI da sua lógica: @Path
- Mudando o verbo HTTP dos seus métodos
- Refatorando o ProdutosController
- Exercícios
AJAX e efeitos visuais
- O que é AJAX?
- Um pouco de JQuery
- Validando formulários com o JQuery
- Criando a busca de produtos
- Melhorando a busca: Autocomplete
- Exercícios
Criando o Carrinho de Compras
- O modelo do Carrinho
- Controlando o carrinho de compras
- Visualizando os itens do carrinho
- Removendo itens do carrinho
- Exercícios
Autenticação
- Criando Usuários
- Efetuando o login
- Restringindo funcionalidades para usuários logados
- Interceptor
Apêndice - Download e Upload
- Exercícios
Apêndice - Integrando VRaptor e Spring
- Como fazer a integração?
- Integrando o Transaction Manager do Spring
- Exercícios: Transaction Manager
Apêndice: Mudando a View Padrão: Velocity
- Exercícios: Configurando o Velocity
- Exercícios: Mudando o Template Engine de uma única lógica
- Exercícios: Mudando o resultado de todas as lógicas para Velocity