Novatec
Authorized Portuguese translation of the English edition of Just Hibernate, ISBN 9781449334376 2014 Madhusudhan Konda. This translation is published and sold by permission of O'Reilly Media, Inc., which owns or controls all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Just Hibernate, ISBN 9781449334376 2014 Madhusudhan Konda. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., a qual detém ou controla todos os direitos para publicação e venda desta obra. Novatec Editora Ltda. [2014]. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Tradução: Lúcia Ayako Kinoshita Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-355-0 Histórico de impressões: Agosto/2014 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 Email: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
Sumário Prefácio...11 Quem deve ler este livro... 11 Por que escrevi este livro... 11 Como este livro está organizado...13 Convenções usadas neste livro...15 Uso de exemplos de código de acordo com a política da O Reilly...16 Como entrar em contato conosco...16 Agradecimentos... 17 Uma nota do autor... 17 Capítulo 1 O básico do Hibernate...18 Nascimento do Hibernate...19 Domínio do problema... 21 A aplicação MovieManager... 21 Aperfeiçoando a aplicação para filmes...25 Usando o Hibernate...28 Configurando a conexão com o banco de dados...29 Criando definições de mapeamento...32 Persistência dos objetos...33 Criando o método para persistência...34 Testando os dados persistentes...35 Configurando o Hibernate...36 Resumo...39 Capítulo 2 Fundamentos do Hibernate...40 Incompatibilidade objeto-relacional...40 Incompatibilidade de herança... 41 Incompatibilidade de identidade...42 Incompatibilidade de relacionamentos e de associações...43 Principais componentes do Hibernate... 44 7
8 Introdução ao Hibernate Classes persistentes... 44 Exemplo: aplicação de trading... 44 Usando anotações...45 Configuração...47 Utilizando um arquivo de propriedades...47 Utilizando o arquivo XML...48 Propriedades de configuração...49 Configuração por meio de programação...49 Mapeamento...50 Arquivos XML para mapeamento...50 Estratégias para geração de identificadores...53 APIs de Session...55 Transações...56 Resumo...58 Capítulo 3 Anotações...59 Trabalhando com um exemplo... 60 Explorando os detalhes...62 Estratégias para geração de ID...63 Identificadores compostos... 66 Usando classe de chave primária e @Id... 66 Usando classe de chave primária e @EmbeddedId... 68 Usando @IdClass...70 Resumo... 71 Capítulo 4 Persistência de coleções...72 Design para as interfaces...72 Persistência de listas...73 Exemplo de lista: showroom de carros...74 Cliente de teste para persistência de lista...76 Persistência de conjuntos... 77 Persistência de mapas...80 Persistência de arrays...82 Persistência de bags e de idbags...84 Persistência de coleções usando anotações...87 Usando uma chave estrangeira...87 Usando uma tabela de junção... 90 Resumo... 91
Sumário 9 Capítulo 5 Associações...92 Associações...93 Multiplicidade...94 Direção...95 Associação de um para um...97 Usando uma chave primária...98 Testando a associação...100 Usando uma chave estrangeira... 102 Anotações... 105 Associação de um para muitos (ou de muitos para um)...106 Associação bidirecional de um para muitos...110 Associação de muitos para muitos... 111 Resumo...113 Capítulo 6 Conceitos avançados...114 Tipos do Hibernate...114 Tipos para entidades e valores...115 Tipos personalizados...116 Componentes...117 Caching...119 Caching de primeiro nível...119 Caching de segundo nível... 120 Caching de queries... 122 Estratégias de herança... 122 Estratégia de tabela por classe... 123 Estratégia de tabela por subclasse... 127 Estratégia de tabela por classe concreta... 130 Estratégia de tabela por classe concreta usando mapeamento XML...131 Filtros... 133 Criando definições de filtros... 133 Habilitando os filtros... 135 Dono do relacionamento (também conhecido como atributo inverso)... 135 Entidades em cascata... 136 Resumo... 138 Capítulo 7 Hibernate Query Language...139 Trabalhando com a classe Query... 140 Acessando todas as linhas...141 Paginação... 143
10 Introdução ao Hibernate Obtendo um único registro... 143 Parâmetros nomeados... 144 Usando a opção IN... 145 Parâmetros posicionais... 146 Aliases... 146 Iteradores...147 Selects...147 Funções de agregação... 149 Atualizações e remoções... 150 Critérios... 150 Queries nomeadas... 152 SQL nativo... 154 Resumo... 155 Capítulo 8 API Java Persistence...156 O Hibernate e a JPA... 157 Contexto da persistência... 158 EntityManagerFactory...161 EntityManager... 162 Persistência de objetos... 163 Salvando e fazendo consultas a entidades... 163 Resumo... 165 Sobre o autor...166 Colofão...166