Hibernate.orgCommunity Documentation

HIBERNATE - Persistência Relacional para Java Idiomático

Documentação de Referência Hibernate

3.5.6-Final

Legal Notice

September 15, 2010


Prefácio
1. Tutorial
1.1. Parte 1 – A primeira aplicação Hibernate
1.1.1. Configuração
1.1.2. A primeira Classe
1.1.3. O mapeamento do arquivo
1.1.4. Configuração do Hibernate
1.1.5. Construindo com o Maven
1.1.6. Inicialização e Auxiliares
1.1.7. Carregando e salvando objetos
1.2. Parte 2 - Mapeando associações
1.2.1. Mapeando a classe Person
1.2.2. Uma associação unidirecional baseada em Configuração
1.2.3. Trabalhando a associação
1.2.4. Coleção de valores
1.2.5. Associações bidirecionais
1.2.6. Trabalhando com links bidirecionais
1.3. EventManager um aplicativo da web
1.3.1. Criando um servlet básico
1.3.2. Processando e renderizando
1.3.3. Implementando e testando
1.4. Sumário
2. Arquitetura
2.1. Visão Geral
2.2. Estados de instância
2.3. Integração JMX
2.4. Suporte JCA
2.5. Sessões Contextuais
3. Configuration
3.1. Configuração programática
3.2. Obtendo uma SessionFactory
3.3. Conexões JDBC
3.4. Propriedades opcionais de configuração
3.4.1. Dialetos SQL
3.4.2. Busca por união externa (Outer Join Fetching)
3.4.3. Fluxos Binários (Binary Streams)
3.4.4. Cachê de segundo nível e consulta
3.4.5. Substituição na Linguagem de Consulta
3.4.6. Estatísticas do Hibernate
3.5. Logging
3.6. Implementando um NamingStrategy
3.7. Arquivo de configuração XML
3.8. Integração com servidores de aplicação J2EE
3.8.1. Configuração de estratégia de transação
3.8.2. SessionFactory vinculada à JNDI
3.8.3. Gerenciamento de contexto de Sessão atual com JTA
3.8.4. implementação JMX
4. Classes Persistentes
4.1. Um exemplo simples de POJO
4.1.1. Implemente um construtor de não argumento
4.1.2. Providencie uma propriedade de identificador (opcional)
4.1.3. Prefira classes não finais (opcional)
4.1.4. Declare acessores e mutadores para campos persistentes (opcional)
4.2. Implementando herança
4.3. Implementando equals() e hashCode()
4.4. Modelos dinâmicos
4.5. Tuplizadores
4.6. EntityNameResolvers
5. Mapeamento O/R Básico
5.1. Declaração de mapeamento
5.1.1. Doctype
5.1.2. Mapeamento do Hibernate
5.1.3. Classe
5.1.4. id
5.1.5. Aprimoração dos geradores de identificador
5.1.6. Otimização do Gerador de Identificação
5.1.7. Composição-id
5.1.8. Discriminador
5.1.9. Versão (opcional)
5.1.10. Timestamp (opcional)
5.1.11. Propriedade
5.1.12. Muitos-para-um
5.1.13. Um-para-um
5.1.14. Id Natural
5.1.15. Componente e componente dinâmico
5.1.16. Propriedades
5.1.17. Subclass
5.1.18. Subclasses Unidas
5.1.19. Subclasse de União
5.1.20. União
5.1.21. Key
5.1.22. Elementos coluna e fórmula
5.1.23. Importar
5.1.24. Any
5.2. Tipos do Hibernate
5.2.1. Entidades e valores
5.2.2. Valores de tipos básicos
5.2.3. Tipos de valores personalizados
5.3. Mapeando uma classe mais de uma vez
5.4. Identificadores quotados do SQL
5.5. Alternativas de Metadados
5.5.1. Usando a marcação XDoclet.
5.5.2. Usando as anotações JDK 5.0
5.6. Propriedades geradas
5.7. Coluna de expressöes de gravação e leitura
5.8. Objetos de Banco de Dados Auxiliares
6. Mapeamento de coleção
6.1. Coleções persistentes
6.2. Mapeamento de coleção
6.2.1. Chaves Externas de Coleção
6.2.2. Elementos de coleção
6.2.3. Coleções indexadas
6.2.4. Coleções de valores e associações muitos-para-muitos
6.2.5. Associações um-para-muitos
6.3. Mapeamentos de coleção avançados.
6.3.1. Coleções escolhidas
6.3.2. Associações Bidirecionais
6.3.3. Associações bidirecionais com coleções indexadas
6.3.4. Associações Ternárias
6.3.5. Using an <idbag>
6.4. Exemplos de coleções
7. Mapeamento de associações
7.1. Introdução
7.2. Associações Unidirecionais
7.2.1. Muitos-para-um
7.2.2. Um-para-um
7.2.3. Um-para-muitos
7.3. Associações Unidirecionais com tabelas associativas
7.3.1. Um-para-muitos
7.3.2. Muitos-para-um
7.3.3. Um-para-um
7.3.4. Muitos-para-muitos
7.4. Associações Bidirecionais
7.4.1. Um-para-muitos/muitos-para-um
7.4.2. Um-para-um
7.5. Associações Bidirecionais com tabelas associativas
7.5.1. Um-para-muitos/muitos-para-um
7.5.2. Um para um
7.5.3. Muitos-para-muitos
7.6. Mapeamento de associações mais complexas
8. Mapeamento de Componentes
8.1. Objetos dependentes
8.2. Coleções de objetos dependentes
8.3. Componentes como índices de Map
8.4. Componentes como identificadores compostos
8.5. Componentes Dinâmicos
9. Mapeamento de Herança
9.1. As três estratégias
9.1.1. Tabela por hierarquia de classes
9.1.2. Tabela por subclasse
9.1.3. Tabela por subclasse: usando um discriminador
9.1.4. Mesclar tabela por hierarquia de classes com tabela por subclasse
9.1.5. Tabela por classe concreta
9.1.6. Tabela por classe concreta usando polimorfismo implícito
9.1.7. Mesclando polimorfismo implícito com outros mapeamentos de herança
9.2. Limitações
10. Trabalhando com objetos
10.1. Estado dos objetos no Hibernate
10.2. Tornando os objetos persistentes
10.3. Carregando o objeto
10.4. Consultando
10.4.1. Executando consultas
10.4.2. Filtrando coleções
10.4.3. Consulta por critério
10.4.4. Consultas em SQL nativa
10.5. Modificando objetos persistentes
10.6. Modificando objetos desacoplados
10.7. Detecção automática de estado
10.8. Apagando objetos persistentes
10.9. Replicando objeto entre dois armazenamentos de dados diferentes.
10.10. Limpando a Sessão
10.11. Persistência Transitiva
10.12. Usando metadados
11. Read-only entities
11.1. Making persistent entities read-only
11.1.1. Entities of immutable classes
11.1.2. Loading persistent entities as read-only
11.1.3. Loading read-only entities from an HQL query/criteria
11.1.4. Making a persistent entity read-only
11.2. Read-only affect on property type
11.2.1. Simple properties
11.2.2. Unidirectional associations
11.2.3. Bidirectional associations
12. Transações e Concorrência
12.1. Sessão e escopos de transações
12.1.1. Unidade de trabalho
12.1.2. Longas conversações
12.1.3. Considerando a identidade do objeto
12.1.4. Edições comuns
12.2. Demarcação de transações de bancos de dados
12.2.1. Ambiente não gerenciado
12.2.2. Usando JTA
12.2.3. Tratamento de Exceção
12.2.4. Tempo de espera de Transação
12.3. Controle de concorrência otimista
12.3.1. Checagem de versão da aplicação
12.3.2. Sessão estendida e versionamento automático
12.3.3. Objetos destacados e versionamento automático
12.3.4. Versionamento automático customizado
12.4. Bloqueio Pessimista
12.5. Modos para liberar a conexão
13. Interceptadores e Eventos
13.1. Interceptadores
13.2. Sistema de Eventos
13.3. Segurança declarativa do Hibernate
14. Batch processing
14.1. Inserção em lotes
14.2. Atualização em lotes
14.3. A interface de Sessão sem Estado
14.4. Operações no estilo DML
15. HQL: A Linguagem de Consultas do Hibernate
15.1. Diferenciação de maiúscula e minúscula
15.2. A cláusula from
15.3. Associações e uniões
15.4. Formas de sintáxe de uniões
15.5. Referência à propriedade do identificador
15.6. A cláusula select
15.7. Funções de agregação
15.8. Pesquisas Polimórficas
15.9. A cláusula where
15.10. Expressões
15.11. A cláusula ordenar por
15.12. A cláusula agrupar por
15.13. Subconsultas
15.14. Exemplos de HQL
15.15. Atualização e correção em lote
15.16. Dicas & Truques
15.17. Componentes
15.18. Sintáxe do construtor de valores de linha
16. Consultas por critérios
16.1. Criando uma instância Criteria
16.2. Limitando o conjunto de resultados
16.3. Ordenando resultados
16.4. Associações
16.5. Busca de associação dinâmica
16.6. Exemplos de consultas
16.7. Projeções, agregações e agrupamento.
16.8. Consultas e subconsultas desanexadas.
16.9. Consultas por um identificador natural
17. SQL Nativo
17.1. Usando um SQLQuery
17.1.1. Consultas Escalares
17.1.2. Consultas de Entidade
17.1.3. Manuseio de associações e coleções
17.1.4. Retorno de entidades múltiplas
17.1.5. Retorno de entidades não gerenciadas
17.1.6. Manuseio de herança
17.1.7. Parâmetros
17.2. Consultas SQL Nomeadas
17.2.1. Utilizando a propriedade retorno para especificar explicitamente os nomes de colunas/alias
17.2.2. Usando procedimentos de armazenamento para consultas
17.3. SQL padronizado para criar, atualizar e deletar
17.4. SQL padronizado para carga
18. Filtrando dados
18.1. Filtros do Hibernate
19. Mapeamento XML
19.1. Trabalhando com dados em XML
19.1.1. Especificando o mapeamento de uma classe e de um arquivo XML simultaneamente
19.1.2. Especificando somente um mapeamento XML
19.2. Mapeando metadados com XML
19.3. Manipulando dados em XML
20. Aumentando o desempenho
20.1. Estratégias de Busca
20.1.1. Trabalhando com associações preguiçosas (lazy)
20.1.2. Personalizando as estratégias de busca
20.1.3. Proxies de associação final único
20.1.4. Inicializando coleções e proxies
20.1.5. Usando busca em lote
20.1.6. Usando busca de subseleção
20.1.7. Perfis de Busca
20.1.8. Usando busca preguiçosa de propriedade
20.2. O Cachê de Segundo Nível
20.2.1. Mapeamento de Cache
20.2.2. Estratégia: somente leitura
20.2.3. Estratégia: leitura/escrita
20.2.4. Estratégia: leitura/escrita não estrita
20.2.5. Estratégia: transacional
20.2.6. Compatibilidade de Estratégia de Concorrência de Cache Provedor
20.3. Gerenciando os caches
20.4. O Cache de Consulta
20.4.1. Ativação do cache de consulta
20.4.2. Regiões de cache de consulta
20.5. Entendendo o desempenho da Coleção
20.5.1. Taxonomia
20.5.2. Listas, mapas, bags de id e conjuntos são coleções mais eficientes para atualizar
20.5.3. As Bags e listas são as coleções de inversão mais eficientes.
20.5.4. Deletar uma vez
20.6. Monitorando desempenho
20.6.1. Monitorando uma SessionFactory
20.6.2. Métricas
21. Guia de Toolset
21.1. Geração de esquema automático
21.1.1. Padronizando o esquema
21.1.2. Executando a ferramenta
21.1.3. Propriedades
21.1.4. Usando o Ant
21.1.5. Atualizações de esquema incremental
21.1.6. Utilizando Ant para atualizações de esquema incremental
21.1.7. Validação de esquema
21.1.8. Utilizando Ant para validação de esquema
22. Exemplo: Pai/Filho
22.1. Uma nota sobre as coleções
22.2. Bidirecional um-para-muitos
22.3. Ciclo de vida em Cascata
22.4. Cascatas e unsaved-value
22.5. Conclusão
23. Exemplo: Aplicativo Weblog
23.1. Classes Persistentes
23.2. Mapeamentos Hibernate
23.3. Código Hibernate
24. Exemplo: Vários Mapeamentos
24.1. Empregador/Empregado
24.2. Autor/Trabalho
24.3. Cliente/Ordem/Produto
24.4. Exemplos variados de mapeamento
24.4.1. Associação um-para-um "Typed"
24.4.2. Exemplo de chave composta
24.4.3. Muitos-para-muitos com função de chave composta compartilhada
24.4.4. Conteúdo baseado em discriminação
24.4.5. Associações em chaves alternativas
25. Melhores práticas
26. Considerações da Portabilidade do Banco de Dados
26.1. Fundamentos da Portabilidade
26.2. Dialeto
26.3. Resolução do Dialeto
26.4. Geração do identificador
26.5. Funções do banco de dados
26.6. Tipos de mapeamentos
Referências