Logar
Evento
/

FJ-25 | Persistência com JPA e Hibernate (Manhã)

FJ-25 | Persistência com JPA e Hibernate (Manhã)

Banner - FJ-25 | Persistência com JPA e Hibernate (Manhã)
Mostrar
  • De 06/08 às 08:30 até: 15/08 às 12:30
  • Rua do Ouvidor 50 - Sobreloja 201 - Centro - Rio de Janeiro/Rio de Janeiro - Brasil

Descrição

Carga Horária: 32 horas aula

 

 

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 as inúmeras facilidades dessas ferramentas facilitam muito a vida do programador Java, trazendo muita produtividade.

 

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, busca textual com Lucene e Hibernate Search, validação com Hibernate Validator e a nova Bean Validation.

 

Após esse curso, você estará preparado para trabalhar em projetos avançados com Hibernate e JPA inclusive com a última versão 2.0 da JPA do Java EE 6.

 

Esse curso faz parte da Formação Java Avançada junto com o 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.

 

 

Conteúdo Detalhado:

 

Persistência com JPA2 e Hibernate

   

  • Livrar-se de SQL?
  • Tirando dúvidas
  • Para onde ir depois?

 

Definição do projeto

   

  • Descrição do problema
  • Tecnologias escolhidas
  • Um panorama geral sobre o domínio do projeto
  • Exercícios: Criando o projeto no eclipse

 

Mapeamento Objeto Relacional

   

  • Trabalhando com o banco de dados
  • Trabalhando com sistemas orientado à objetos
  • Evitando o SQL dentro do código Java
  • Unindo os dois mundos através do Mapeamento Objeto Relacional
  • A Java Persistence API - JPA
  • Mapeando os modelos através de anotações
  • Configurando a JPA
  • Criando o banco de dados e se conectando
  • Persistindo objetos dentro de uma transação
  • Exercícios: Mapeando os modelos e criando o banco de dados
  • 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

   

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

 

Complementando o modelo através de relacionamentos

   

  • Relacionando a Movimentação com uma Conta
  • Trabalhando com enumerações
  • Definindo a cardinalidade do relacionamento
  • Exercícios: Criando o modelo de Movimentacao
  • Persistindo objetos envolvidos em relacionamentos
  • Exercícios: Tentando criar uma nova Movimentação relacionada com uma Conta
  • E quando falha? Entendendo a TransientObjectException
  • Buscando objetos com relacionamentos
  • Atualizando objetos envolvidos em relacionamentos
  • Criando o DAO de Movimentação
  • Exercícios: Persistindo e pesquisando relacionamentos
  • Para saber mais: Operações em cascata

 

Integrando o Hibernate com uma aplicação Web

   

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

 

Criando queries avançadas para os relatórios

   

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

 

Relacionamento bidirecional e Lazyness

   

  • E quando eu preciso saber quais são as movimentações da conta?
  • Exercícios: Testando o novo mapeamento
  • Relacionamento bidirecional
  • Exercícios: Utilizando o mappedBy no relacionamento bidirecional
  • Detalhes do relacionamento bidirecional
  • Relacionamentos Many To Many
  • Exercício: Criando um relacionamento Many To Many
  • Lazyness
  • Exercícios: Testando o carregamento das tags
  • Para saber mais: Fetch Profile
  • Problema comum na web: LazyInitializationException
  • Open EntityManager In View e Controle Transacional
  • Exercícios: Implementando o filtro do Open EntityManager In View
  • Decidindo pelo lazy ou não
  • Para saber mais: join fetch e @BatchSize

 

Cuidando melhor das conexões e queries

   

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

 

Criando consultas com Criteria

   

  • Evitando concatenação de String nas queries
  • As classes principais da Criteria
  • Exercício opcional: Conhecendo a Criteria
  • Exercício opcional: Pesquisa no relacionamento com MetaModelo dinâmico
  • Montando uma consulta dinâmica
  • Criteria typesafe com Metamodel
  • Criteria typesafe com Static Metamodel
  • Exercícios: Consultas utilizando Strings na Criteria
  • Desafio: Join e Fetch nas Criterias
  • Exercício opcional: Configurando a geração do Static Metamodel pelo Eclipse
  • Discussão: Qual tipo de Criteria devo utilizar?
  • Desafio: Explore a API de Criteria

 

Validação e integridade dos modelos

   

  • Validando dados
  • A forma tradicional de validação
  • A forma simples: Bean Validation e Hibernate Validator
  • Utilizando o Hibernate Validator
  • Exercícios: Adicionando o Hibernate Validator aos modelos
  • Outros validadores
  • Exercícios: Utilizando outros validadores
  • Alterando a mensagem de erro das validações padrão
  • Exercícios: Sobrescrevendo as mensagens de validação
  • Criando seu próprio validador
  • Exercícios: Criando um validador customizado
  • Para saber mais: Agrupando anotações de validação para evitar repetição
  • Validação em cascata
  • Integração com outras tecnologias
  • Exercícios: Integrando com outras tecnologias

 

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

   

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

 

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

   

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

 

Mais mapeamentos

   

  • Relacionamentos um para um
  • Exercícios: Mapeando relacionamentos um para um
  • O pattern Value Object do Domain Driven Design
  • Implementando value objects com Embeddable
  • Exercícios: Utilizando o Embeddable em atributos
  • Para saber mais: Detalhes sobre o Embeddable
  • Para saber mais: Mapeando chaves compostas

 

Apêndice - Detalhes sobre os mapeamentos

   

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

 

Apêndice - Hibernate Envers

   

  • Auditando as alterações: Listeners
  • Utilizando o Hibernate Envers
  • Exercícios: Utilizando o Hibernate Envers
  • Para saber mais: Revision Entity

 

Apêndice - Engenharia reversa com Hibernate Tools

   

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

 

Apêndice - Hibernate Puro

   

  • Entendendo a Diferença JPA e Hibernate
  • Configuração do hibernate sem JPA
  • Startup e CRUD com Hibernate
  • Consultas com Criteria do Hibernate
  • Rescursos especiais nas buscas
  • Joins e Produto Cartesiano
  • Scrollable Results um comparativo com o JDBC
  • Subselect com Detached Criteria
  • StatelessSession


 

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

Ler mais

Localização

Programação

Este evento não possui atividades no momento.

Planta do Evento

A planta do evento não está disponível.

Contato

Preencha os campos abaixo para enviar e-mail ao organizador.

Campos Obrigatórios
Campos Obrigatórios
Ao se cadastrar, você concorda com nossos Termos de uso.
Ajaxloader

Compartilhar evento por e-mail


Para continuar, faça login ou cadastre-se.

Recomende este evento para sua rede.

Selecione os usuários que deseja recomendar este evento.