Formação Java EE

Curso Persistência com JPA, Hibernate e EJB lite

  • Última versão da Java Persistence API com Hibernate;
  • Conceitos de mapeamento objeto-relacional (ORM);
  • Uso de pool de conexões e datasources Java EE;
  • Gerenciamento de transações com EJB lite;
  • Agendamento de tarefas com Timer Service do Java EE;
  • Queries avançadas com criteria, JPQL, relacionamentos, named queries;
  • Validação de dados com Bean Validation API;
  • Otimizações com cache, uso de locks e estatísticas;
  • Curso completo pra você dominar acesso a banco de dados em Java.

Sobre o curso FJ-25

Seja na Web ou no Desktop, trabalhar com banco de dados em Java é praticamente sinônimo de JPA e Hibernate. O mapeamento objeto-relacional e os recursos dessas ferramentas aumentam muito a produtividade do programador Java.

Neste curso recentemente reformulado, o aluno conhecerá em detalhes a JPA e o Hibernate em suas versões mais atualizadas. O curso aborda os conceitos de ORM, gerenciamento de persistência, relacionamentos, buscas avançadas, otimizações, cache, integração com Web, validação com Bean Validation além de gerenciar os recursos EJB lite e CDI dentro do servidor de aplicação JBoss.

Após esse curso, você estará preparado para trabalhar em projetos avançados usando JBoss AS 7 com EJB lite, Hibernate e JPA inclusive com a última versão 2 da JPA do Java EE.

Veja também a ementa detalhada do curso.

Pré-requisitos

Ou: Java, Orientação a Objetos, Collections, JSP, JSTL básico, MVC, patterns DAO e Factory.

40horas aula

A opinião de quem fez

A melhor escola com que o Conselho da Justiça Federal poderia fazer a finalização tecnológica em relação ao Processo Judicial Eletrônico. A empresa Caelum propiciou ( tem propiciado) um excelente treinamento para os servidores da Justiça.

Cláudia da Costa Coutinho Salgues, Caelum Brasília

O curso foi bem conduzido e o seu conteúdo bem distribuído.

Itanor Strapazzon, Florianópolis - SC

Curso ótimo e bons exemplos do instrutor. E conteudo bem parrudo.

Marcos Hideo Inoue

Próximas turmas

DataPeríodoCidadeComentário
27/10 a 07/11Noturno (19h às 23h)São Paulo Turma com desconto especial! Aproveite
01/11 a 29/11Sábado (9h às 17h)Brasília
10/11 a 14/11Integral (9h às 17h)São Paulo
14/03 a 11/04Sábado (9h às 17h)São Paulo

Não achou a turma ideal pra você? Entre em contato e consulte outras turmas e horários.

Fale com a gente.

Dúvidas, reservas ou um papo com um instrutor?

Conteúdo detalhado

Persistência com JPA2 e Hibernate

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

Definição do projeto

  1. Descrição do problema
  2. Tecnologias escolhidas
  3. Uma visão 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 a 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. Instalando o Hibernate e o driver do MySQL
  7. Mapeando os modelos através de anotações
  8. Estratégias da JPA para chaves auto geradas
  9. Configurando a JPA
  10. Criando o banco de dados e se conectando
  11. Persistindo objetos dentro de uma transação
  12. Exercícios: Mapeando os modelos e criando o banco de dados
  13. 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. Encapsulando a criação do EntityManager
  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. Para saber mais: Repository
  6. Exercícios: Encapsulando código através do DAO
  7. Estados das entidades e ciclo de vida
  8. O estado Managed
  9. O estado Transient
  10. O estado Detached
  11. O estado Removed

Complementando o modelo com o uso de relacionamentos

  1. Relacionando a Movimentação com uma Conta
  2. Trabalhando com enumerações e datas
  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 TransientPropertyValueException
  8. Buscando objetos em relacionamentos
  9. Atualizando objetos envolvidos em relacionamentos
  10. Criando o DAO de Movimentação
  11. Exercícios: Persistindo e pesquisando em relacionamentos
  12. Para saber mais: Operações em cascata
  13. Callbacks para Entidades
  14. EntityListener
  15. Exercício opcional - EntityListeners

Introdução a Java EE

  1. Gerenciamento do JPA
  2. Inversão de Controle
  3. Java EE - Java Enterprise Edition
  4. Servidor de aplicação
  5. Para saber mais: JBoss AS se chama WildFly
  6. Exercício: Instalação do JBoss
  7. Diretórios do JBoss
  8. Em casa
  9. Exercício: Configurando o JBoss no WTP do Eclipse

Cuidando melhor das conexões com Pool e DataSource

  1. Escalabilidade e conexões com o banco, qual a relação entre eles?
  2. Connection Pool do Hibernate
  3. Configuração do DataSource no JBoss
  4. Datasource com MySQL
  5. Em casa: Tarefa do Administrador - Configuração do DataSource no JBoss AS
  6. Usando o C3P0 como ::pool:: para aplicações sem DataSource
  7. Exercícios opcionais: Configurando e gerenciando o ::pool:: com o C3P0

Gerenciamento da JPA com EJB lite dentro de uma aplicação Web

  1. A ideia do projeto web
  2. Exercício: colocando o projeto web no ar
  3. Integrando JPA e o DataSource
  4. Gerenciamento da JPA dentro do JBoss
  5. Introdução aos Enterprise Java Beans
  6. Injeção com @PersistenceContext
  7. Tipos de EJBs
  8. Gerenciamento de transação: modo declarativo
  9. Integrando JSF com EJB através de CDI
  10. Exercícios: Integrando os DAOs ao projeto Web
  11. Exercícios: Alteração da Conta

EJB 3.1 - Ciclo de vida de Session Beans

  1. Em que momento acontece a injeção?
  2. Ciclo de vida de um Stateless Session Bean
  3. Pool de objetos
  4. Atributos de instância de um Stateless Session Bean
  5. Configurando o pool de instâncias do JBoss
  6. Um bean na aplicação: Singleton
  7. Um bean por cliente: Stateful
  8. Qual tipo de Session Bean devo usar?
  9. Interfaces Locais e Remotas de Session Bean
  10. Para saber mais: Lookup pelo JNDI
  11. Exercícios

Agendamento de tarefas

  1. Agendamentos precisos com TimerService
  2. Agendamento exato
  3. Expressões declarativas com @Schedule
  4. Exercícios: Agendamento

Transações e Exceções

  1. Confiabilidade dos dados
  2. Gerenciamento de transação: modo programático (BMT)
  3. O modo declarativo (CMT)
  4. Tratamento de exceções
  5. System Exceptions
  6. Application Exceptions
  7. Exercícios: Manipulando a transação com EJB 3
  8. Exercício opcional - @TransactionAttribute
  9. Exercício opcional - BMT

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 as 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 Muitos-Para-Muitos
  8. Para saber mais: @JoinTable
  9. Comportamento Lazy
  10. Problema comum na web: LazyInitializationException
  11. Exercício: Relacionamentos Lazy
  12. Inicializando as entidades com Queries planejadas
  13. Exercícios: Queries planejadas
  14. Para saber mais: Fetch Profile
  15. Resolvendo o problema do Lazy-Loading
  16. Open EntityManager In View com CDI
  17. Exercícios: Implementando o pattern Open EntityManager In View
  18. @BatchSize e Queries n+1

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

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. Cache no JBoss AS: Infinispan
  5. Habilitando o Infinispan em sua aplicação
  6. Exercício: Configurando e testando o Infinispan
  7. Cache de collections
  8. Exercícios: Utilizando cache para as collections
  9. Invalidadação programática do Cache - javax.persistence.Cache
  10. Exercício opcional: Invalidar programaticamente
  11. Cache de queries
  12. Exercícios: Adicionando cache em consultas
  13. Trabalhando com cache fora de um servidor de aplicação
  14. Exercício opcional: Configurando e testando o EhCache
  15. Para saber mais: Estratégias para invalidar o cache
  16. Vendo nossa performance: Hibernate Statistics
  17. Exercícios: Visualizando estatísticas do hibernate na aplicação web
  18. Extended Persistence Context - Um EntityManager para várias requisições
  19. Lock otimista e pessimista
  20. Exercícios: Configurando e testando o lock otimista
  21. Para saber mais: Operações em lote
  22. Exercícios Opcionais: Operações em lote
  23. As novidades do JPA 2.1 no Java EE 7

Validação e integridade dos modelos

  1. Definição de constraints no banco pelo JPA
  2. Exercícios: Validação através de Constraints
  3. Validando objetos
  4. A forma tradicional de validação
  5. A forma simples: Bean Validation e Hibernate Validator
  6. Utilizando o Hibernate Validator
  7. Exercícios: Adicionando o Hibernate Validator aos modelos
  8. Outros validadores
  9. Alterando a mensagem de erro das validações padrão
  10. Criando seu próprio validador
  11. Exercícios: Criando um validador customizado
  12. Para saber mais: Agrupando anotações de validação para evitar repetição
  13. Validação em cascata
  14. Para saber mais: Novidades do Bean Validation no Java EE 7
  15. Integração com outras tecnologias

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

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 - Googlando sua aplicação através do Hibernate Search

  1. O problema de busca por texto: a descrição da movimentação
  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. Para saber mais: Buscando termos usando AND e NOT

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. Recursos especiais nas buscas
  6. Joins e Produto Cartesiano
  7. Scrollable Results um comparativo com o JDBC
  8. Subselect com Detached Criteria
  9. StatelessSession


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