Caelum - Cursos de Java, Scrum, Ruby on Rails

Formação Java Avançada

[ 72 horas aula ]

São dois módulos avançados de Java EE 6 recentemente reformulados:

Durante as 72h dessa formação, você verá na prática como construir uma aplicação completa usando as principais ferramentas do mercado Java EE: JSF e JPA com Hibernate. A formação foi recentemente reformulada para incluir as novidades das especificações JPA 2.0 e JSF 2.0, ambas do Java EE 6.

Entre os tópicos abordados estão mapeamento com JPA, buscas avançadas, buscas textuais com Lucene e Hibernate Search, validação com Bean Validation, criação de telas com JSF, Facelets, Ajax, otimizações, CDI e integração JSF/JPA.

É uma completa formação para quem deseja se aprofundar nas tecnologias do Java EE incluindo as últimas versões das especificações. Veja mais detalhes sobre cada um dos módulos: FJ-25 e FJ-26.

Pré-requisitos: Cursos FJ-11 e FJ-21 ou: Java, Orientação a Objetos, Collections, JSP, JSTL básico, MVC, patterns DAO e Factory

Faça já sua reserva no FormacaoJavaAvancada Entrar em contato Ver conteúdo detalhado

A opinião de quem fez o FormacaoJavaAvancada

Finalizei a formação Java Avançado com a certeza de que estou bem melhor preparado para os desafios do dia-a-dia. Nota 1000.

Carlos Amaral, Taboão da Serra SP, aos sábados em 07/05/2011

Parabéns, Caelum. Os instrutores foram fantásticos, um grande passo em minha carreira.

Rodrigo M. Rocha, Santo André SP, aos sábados em 07/05/2011
Ver mais depoimentos

Alguma dúvida? Quer fazer uma reserva? Entre em contato, estamos a disposição para atendê-lo


Conteúdo detalhado do FormacaoJavaAvancada

Persistência com JPA2 e Hibernate

  1. Livrar-se de SQL?
  2. Tirando dúvidas
  3. Para onde ir depois?

Definição do projeto

  1. Descrição do problema
  2. Tecnologias escolhidas
  3. Um panorama geral sobre o domínio do projeto
  4. Exercícios: Criando o projeto no eclipse

Mapeamento Objeto Relacional

  1. Trabalhando com o banco de dados
  2. Trabalhando com sistemas orientado à objetos
  3. Evitando o SQL dentro do código Java
  4. Unindo os dois mundos através do Mapeamento Objeto Relacional
  5. A Java Persistence API - JPA
  6. Mapeando os modelos através de anotações
  7. Configurando a JPA
  8. Criando o banco de dados e se conectando
  9. Persistindo objetos dentro de uma transação
  10. Exercícios: Mapeando os modelos e criando o banco de dados
  11. Exercícios Opcionais: Tempo de execução, criação do banco de dados e scanning de entidades

Organização de persistência: DAO e outros patterns

  1. JPAUtil
  2. Exercícios: Controlando a criação do EntityManagerFactory com a JPAUtil
  3. Encapsulando a JPA dentro dos DAOs
  4. Queries: Selecionando todas linhas
  5. E quando eu tiver muitos DAOs? Não quero repetir código
  6. Para saber mais: Repository
  7. Exercícios: Encapsulando código através do DAO
  8. Estados das entidades e ciclo de vida
  9. O estado Managed
  10. O estado Transient
  11. O estado Detached
  12. O estado Removed

Complementando o modelo através de relacionamentos

  1. Relacionando a Movimentação com uma Conta
  2. Trabalhando com enumerações
  3. Definindo a cardinalidade do relacionamento
  4. Exercícios: Criando o modelo de Movimentacao
  5. Persistindo objetos envolvidos em relacionamentos
  6. Exercícios: Tentando criar uma nova Movimentação relacionada com uma Conta
  7. E quando falha? Entendendo a TransientObjectException
  8. Buscando objetos com relacionamentos
  9. Atualizando objetos envolvidos em relacionamentos
  10. Criando o DAO de Movimentação
  11. Exercícios: Persistindo e pesquisando relacionamentos
  12. Para saber mais: Operações em cascata

Integrando o Hibernate com uma aplicação Web

  1. A ideia do projeto web
  2. Exercício: colocando o projeto web no ar
  3. Entendendo a estrutura do projeto web e integrando com os DAOs
  4. Exercícios: Integrando os DAOs ao projeto Web
  5. A atualização da conta em uma aplicação web
  6. Exercícios: Alteração da Conta

Criando queries avançadas para os relatórios

  1. Entendendo a JPQL
  2. Utilizando JPQL com and e or no filtro
  3. Exercícios: Buscando todas movimentações de determinada conta
  4. Exercícios: Buscando movimentações seguindo alguns critérios
  5. Executando buscas com funções
  6. Pesquisando com filtros em relacionamentos
  7. Exercícios: Calculando o total movimentado em uma Conta
  8. Exercícios: Pesquisando no relacionamento
  9. Implementando pesquisas complexas com JPQL
  10. Exercícios: Relatório avançado
  11. Para saber mais: Having
  12. Para saber mais: Named Queries

Relacionamento bidirecional e Lazyness

  1. E quando eu preciso saber quais são as movimentações da conta?
  2. Exercícios: Testando o novo mapeamento
  3. Relacionamento bidirecional
  4. Exercícios: Utilizando o mappedBy no relacionamento bidirecional
  5. Detalhes do relacionamento bidirecional
  6. Relacionamentos Many To Many
  7. Exercício: Criando um relacionamento Many To Many
  8. Lazyness
  9. Exercícios: Testando o carregamento das tags
  10. Para saber mais: Fetch Profile
  11. Problema comum na web: LazyInitializationException
  12. Open EntityManager In View e Controle Transacional
  13. Exercícios: Implementando o filtro do Open EntityManager In View
  14. Decidindo pelo lazy ou não

Cuidando melhor das conexões e queries

  1. Escalabilidade e conexões com o banco, qual a relação entre eles?
  2. Connection Pool do Hibernate
  3. Usando o C3P0 como pool de conexões
  4. Exercícios: Configurando e gerenciando o pool com o C3P0

Criando consultas com Criteria

  1. Evitando concatenação de String nas queries
  2. As classes principais da Criteria
  3. Exercício opcional: Conhecendo a Criteria
  4. Exercício opcional: Pesquisa no relacionamento com MetaModelo dinámico
  5. Montando uma consulta dinâmica
  6. Criteria typesafe com Metamodel
  7. Criteria typesafe com Static Metamodel
  8. Exercícios: Consultas utilizando Strings na Criteria
  9. Desafio: Join e Fetch nas Criterias
  10. Exercício opcional: Configurando a geração do Static Metamodel pelo Eclipse
  11. Discussão: Qual tipo de Criteria devo utilizar?
  12. Desafio: Explore a API de Criteria

Validação e integridade dos modelos

  1. Validando dados
  2. A forma tradicional de validação
  3. A forma simples: Bean Validation e Hibernate Validator
  4. Utilizando o Hibernate Validator
  5. Exercícios: Adicionando o Hibernate Validator aos modelos
  6. Outros validadores
  7. Exercícios: Utilizando outros validadores
  8. Alterando a mensagem de erro das validações padrão
  9. Exercícios: Sobrescrevendo as mensagens de validação
  10. Criando seu próprio validador
  11. Exercícios: Criando um validador customizado
  12. Validação em cascata
  13. Integração com outras tecnologias
  14. Exercícios: Integrando com outras tecnologias

Googlando sua aplicação através do Hibernate Search

  1. O problema de busca por texto: nossas tags
  2. Apache Lucene
  3. Além da especificação da JPA2: Recursos específicos do Hibernate
  4. Encapsulando o Lucene com Hibernate Search
  5. Configuração do Hibernate Search
  6. Exercícios: Indexação das Movimentações
  7. Buscando através do Hibernate Search
  8. Exercícios: Utilizando o Hibernate Search para buscas textuais
  9. Exercício opcional: Geração de várias movimentações e observando os índices com o Luke
  10. Para saber mais: atualizando o índice
  11. Para saber mais: MultiFieldQueryParser
  12. Indexando mais de um campo
  13. Para saber mais: Utilizando o Hibernate Search DSL para facilitar buscas avançadas
  14. Exercícios Opcionais: Utilizando o Hibernate Search DSL para facilitar buscas avançadas
  15. Para saber mais: Buscando termos usando AND e NOT

Recursos avançados: Cache, estatísticas e Locks

  1. Cache de primeiro nível
  2. Exercícios: Testando o cache de primeiro nível
  3. Cache de segundo nível
  4. Exercícios: Configurando e testando o cache de segundo nível
  5. Estratégias para invalidar o cache
  6. Cache de collections
  7. Exercícios: Utilizando cache para as collections
  8. Invalidadação programática - javax.persistence.Cache
  9. Exercício opcional: Invalidar programaticamente
  10. Cache de queries
  11. Exercícios: Adicionando cache em consultas
  12. Vendo nossa performance: Hibernate Statistics
  13. Exercícios: Visualizando estatísticas do hibernate na aplicação web
  14. Extended Persistence Context - Um Entity Manager para várias requisições
  15. Lock otimista e pessimista
  16. Exercícios: Configurando e testando o lock otimista
  17. Para saber mais: Operações em lote
  18. Exercícios Opcionais: Operações em lote

Mais mapeamentos

  1. Relacionamentos um para um
  2. Exercícios: Mapeando relacionamentos um para um
  3. O pattern Value Object do Domain Driven Design
  4. Implementando value objects com Embeddable
  5. Exercícios: Utilizando o Embeddable em atributos
  6. Para saber mais: Detalhes sobre o Embeddable
  7. Para saber mais: Mapeando chaves compostas

Apêndice - Detalhes sobre os mapeamentos

  1. Mapeando os objetos para um banco de dados legado
  2. Mapeamento de Herança
  3. Fazendo scripts de criação de tabelas com SchemaExport
  4. Exercícios opcionais: vendo o schema gerado

Apêndice - Hibernate Envers

  1. Auditando as alterações: Listeners
  2. Utilizando o Hibernate Envers
  3. Exercícios: Utilizando o Hibernate Envers
  4. Para saber mais: Revision Entity

Apêndice - Engenharia reversa com Hibernate Tools

  1. Introdução ao Hibernate Tools
  2. Configuração do Ant
  3. Exercícios: Gerando as entidadas a partir das tabelas

Apêndice - Hibernate Puro

  1. Entendendo a Diferença JPA e Hibernate
  2. Configuração do hibernate sem JPA
  3. Startup e CRUD com Hibernate
  4. Consultas com Criteria do Hibernate
  5. Rescursos especiais nas buscas
  6. Joins e Produto Cartesiano
  7. Scrollable Results um comparativo com o JDBC
  8. Subselect com Detached Criteria
  9. StatelessSession

Laboratório Web com JSF e CDI

  1. Construindo aplicações web ricas de forma fácil
  2. Integração com tecnologias do Java EE
  3. Tirando dúvidas
  4. Para onde ir depois?

Definição do projeto

  1. Descrição do problema
  2. Tecnologias escolhidas
  3. Modelo
  4. Implementando o DAO
  5. Servlet Container
  6. Exercícios: Instalando o Tomcat e criando o projeto
  7. Para saber mais: Em casa

JavaServer Faces

  1. Motivação: HTTP stateless
  2. Motivação: Swing, Visual Basic e Delphi
  3. JavaServer Faces
  4. Primeiro exemplo
  5. Exercícios: primeira página
  6. Criando o formulário de cadastro
  7. Exercícios: a página de cadastro de produtos
  8. Managed Beans
  9. Ligando Managed Beans a componentes visuais
  10. Exercícios: Gravação de produtos
  11. Listagem com dataTable
  12. Diferentes estilos de MVC: O MVC Push e o Pull
  13. Exercícios: Listagem de produtos
  14. Exercícios opcionais
  15. Removendo um produto e parâmetros de EL
  16. Exercícios: Remoção de produtos
  17. O estado da tela e o @ViewScoped
  18. Exercícios: @ViewScoped
  19. Alteração de produtos e o setPropertyActionListener
  20. Exercícios: Alterando produtos
  21. Exercícios opcionais

Ajax com JSF 2

  1. Ajax
  2. Ajax e JSF
  3. Como utilizar AJAX nas aplicações JSF
  4. Exercícios: Remoção de produtos com Ajax
  5. Para saber mais: A tag
  6. Exercícios: Submetendo formulários com AJAX

Aplicando layouts à aplicação com CSS

  1. Melhorando a interface gráfica
  2. Integrando CSS com o JSF
  3. Adicionando imagens na aplicação
  4. Exercícios: Melhorando a interface gráfica

Entendendo JSF a fundo

  1. Reduzindo a complexidade de outras APIs
  2. A árvore de componentes
  3. Alterando a forma de armazenamento da árvore de componentes
  4. Compreendendo o ciclo de vida de uma requisição do JSF
  5. Primeira fase: Restauração da view
  6. Segunda fase: Aplicar os valores da requisição
  7. Terceira fase: Converter e processar validações
  8. Quarta fase: Atualização dos modelos
  9. Quinta fase: Invocação da lógica
  10. Sexta fase: Renderizar resposta
  11. Exercícios: Fases do JSF
  12. Debugando o ciclo de vida do JSF com um PhaseListener
  13. Exercícios: Observando as fases do JSF

Login e navegação

  1. Criando a funcionalidade de login
  2. Exercício: Criando o formulário de Login
  3. Navegação condicional
  4. Navegação entre telas
  5. Guardando dados em escopo de sessão
  6. Exercício: Completando o Login
  7. Exercício Opcional: Aplicando layout na tela de login
  8. Para saber mais: Redirecionamento durante a navegação
  9. Exercícios Opcionais: Evitando submissões duplicadas
  10. Interceptando as fases com PhaseListeners
  11. Autorização com PhaseListeners
  12. Exercícios: Autorização com PhaseListener
  13. Exercícios opcionais: Logout e tela de cadastro de usuários

Templates com Facelets

  1. Repetição de código e seus problemas
  2. Resolvendo a duplicidade das Views
  3. Templating com o Facelets
  4. Exercícios: Templates com Facelets
  5. Para saber mais: Campos padrões no template
  6. Exercícios opcionais: Valores default no template
  7. Componentes customizados com Facelets
  8. Exercícios opcionais: Composite-componentes

Formulário master/detail stateful

  1. Cadastro de notas fiscais e ViewScoped
  2. Exercícios: Master (NotaFiscal)
  3. Exercícios: Detail (Item)
  4. Exercícios opcionais: Ajax

Interfaces Web 2.0 com componentes ricos

  1. Bibliotecas de componentes
  2. Melhorando a tela de adição de notas fiscais
  3. PrimeFaces
  4. Adicionando datepicker
  5. Exercícios: componente de calendário
  6. Máscara com p:inputMask
  7. Exercícios: máscara no campo CNPJ
  8. Realizando paginação de dados
  9. Exercício: Realizando a paginação dos dados
  10. Paginação customizada com banco de dados
  11. Exercícios: Estendendo componentes para realizar paginação no banco de dados
  12. Menus e navegação
  13. Exercícios: menus
  14. Adicionando abas
  15. Exercícios: componente de abas
  16. Exercícios opcionais
  17. Para saber mais: Geração de gráficos com PrimeFaces
  18. Desafio: gráficos
  19. Para saber mais: Upload de arquivos com o PrimeFaces
  20. Desafio: Upload de imagens dos produtos
  21. Para saber mais: Melhorando a seleção de produtos na tela de itens com o Autocomplete
  22. Exercício opcional

Validação e conversão de dados

  1. Validação
  2. Validação com Bean Validation
  3. Exercícios: Integrando Bean Validation com o JSF
  4. Validação com componentes JSF
  5. Exercícios: Componentes de validação
  6. Validações customizadas com JSF
  7. Exercício: Criando métodos de validação
  8. Evitando duplicidades de validações criando classes validadoras
  9. Exercícios: @FacesValidator
  10. Conversores de dados com o JSF
  11. Immediate
  12. Submitted value
  13. Exercícios: immediate
  14. Para saber mais: Conversores customizados
  15. Exercícios opcional: Conversores personalizados

Injeção de Dependências com CDI

  1. Problemas do alto acoplamento
  2. Estratégias para diminuir o acoplamento
  3. Injeção de dependências
  4. Implementando DI com Contexts e Dependency Injection API - CDI
  5. Liberação de dependências com @Disposes
  6. Configuração do Weld
  7. Exercícios: Utilizando CDI para injetar dependências
  8. Melhorando a autenticação com CDI
  9. Exercícios: Utilizando CDI para injetar dependências
  10. Para saber mais: Injeção de Dependências e Testes

JBoss Seam 3

  1. Introdução ao Seam
  2. Instalação do Seam
  3. Exercícios: adicionando Seam ao projeto
  4. Integração CDI com JSF
  5. Named packages com Seam Solder
  6. Exercício opcional
  7. Injeção de dependências no JSF com Seam Faces
  8. Validação de múltiplos campos com Seam Faces
  9. Exercícios: Validação de múltiplos campos
  10. Conversor de produto
  11. Exercícios opcionais
  12. Lidando com requisições GET no JSF
  13. Exercícios: f:metadata

Apêndice - Recursos Avançados de CDI, JSF e Seam

  1. Injection Points
  2. Exercícios: InjectionPoint
  3. Interceptadores do CDI
  4. Exercícios: Trabalhando com conexões e transações
  5. Discussão: Transações demarcadas ou transação por request
  6. Exercícios opcionais: migrar tudo para CDI
  7. Binding de componentes do JSF
  8. Exercícios: Binding
  9. Atributos produtores
  10. Qualifiers do CDI
  11. Exercícios: Qualifiers
  12. Menos anotações nas classes com Stereotypes
  13. Exercícios: Stereotypes
  14. Conversation Scope
  15. Exercícios: conversação
  16. Eventos e observers do CDI
  17. Eventos do JSF com Seam
  18. Exercícios: Autorizador com CDI e Seam
  19. Para saber mais: Interceptador de Auditoria

Apêndice - LOG4J

  1. Log4J
  2. Exercícios: Log4J no LoginBean
  3. Injetando o Logger do Log4J
  4. Exercícios: Utilizando o InjectionPoint

Apêndice - Internacionalização: sua aplicação em várias línguas

  1. Formas de internacionalizar a aplicação
  2. Utilizando o JSF para internacionalizar
  3. Exercícios: Começando a internacionalização e localização da aplicação
  4. Alterando o idioma manualmente
  5. Exercícios: Definindo o idioma através de links
  6. Internacionalizando mensagens de erro do Bean Validation
  7. Exercícios: Internacionalizando mensagens de erro
  8. Internacionalizando as mensagens dentro dos Managed Beans
  9. Exercícios: Internacionalizando as mensagens do Managed Beans
  10. Exercício Opcional: Internacionalizando a aplicação por completo
  11. Mensagens com Seam International
  12. Exercícios

Apêndice - Seam Persistence

  1. Seam Persistence - Introdução
  2. Seam Persistence - Instalação
  3. Tirando proveito do Seam Persistence
  4. Exercícios
  5. Queries com EL no Seam Persistence
  6. Forçar exceções a fazerem rollback


* Os apêndices listados são conteúdos adicionais que não fazem parte do curso regular.