Você está aqui: Hibernate ::: Dicas & Truques ::: Hibernate Annotations (Anotações Hibernate)

Aprenda a usar Annotations no Hibernate 3

Quantidade de visualizações: 10649 vezes
Quando estamos iniciando o estudo do Hibernate é comum definirmos o mapeamento entre a classe Java e sua tabela correspondente no banco de dados usando um arquivo XML. Assim, uma classe Cliente seria mapeada para uma tabela clientes usando um arquivo de mapeamento chamado cliente.hbm.xml.

Porém, à medida que progredimos podemos tirar proveito de uma abordagem mais elegante disponível a partir do Java 5. Este recurso é conhecido como anotações (Annotations) e usado diretamente no código fonte das classes Java. Uma das vantagens do uso de Annotations é que as ferramentas de desenvolvimento tais como Eclipse e Netbeans fornecem recurso de auto-completar para o código e formatação de sintáxe, o que agiliza muito nosso trabalho de desenvolvimento.

O Hibernate Annotations também suporta as novas especificações de persistência do EJB 3 (Enterprise Java Beans). Estas especificações objetivam fornecer um mecanisco de persistência padronizado para o Java. Enquanto o Hibernate 3 fornece algumas extensões a mais, podemos nos virar com os padrões e codificar a camada de persistência do Hibernate usando o modelo de programação do EJB 3.

Mas, é preciso entender os cenários nos quais o uso do Hibernate Annotations é bem-vindo. Suponhamos que você esteja migrando de uma ambiente Hibernate 2 para um ambiente Hibernate 3. É claro que você já terá todos os arquivos de mapeamento XML. Neste caso, é recomendável que você abandone seus mapeamento XML somente se você tiver tempo de sobra, uma vez que os mesmos continuarão funcionando sem qualquer alteração no Hibernate 3.

Outra questão diz respeito à migração a partir de um ambiente legado. Em alguns casos temos dezenas de POJOs já existentes e funcionando corretamente e não gostaríamos de inserir anotações nos mesmos, o que acarretaria em novos testes, de forma a evitar possíveis bugs em classes já em produção. Há ainda os casos nos quais não temos o código-fonte dos POJOs (talvez foram perdidos ou gerados por uma ferramenta de automação). Aqui podemos usar o arquivo de mapeamento XML para novamente obter o código-fonte da classe que nos interessa. Manter as informações de mapeamento como arquivos XML externos nos permite mudar detalhes do mapeamento para refletir regras de negócio ou alterações de esquema sem a necessidade de reconstruir toda a aplicação novamente.

Um ponto a favor de Annotations é que o mapeamento diretamente no código-fonte da classe é muito mais intuitivo, uma vez que elas estão muito próximas das propriedades ou campos com as quais elas estão relacionadas.

sendo assim, Considere o seguinte POJO (Plain Old Java Object):

Este trecho de código ou resolução de exercício faz parte do Super Pack 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos em Java, Python, VisuAlg, Portugol, Delphi, C#, C, C++, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Aprenda a programar resolvendo problemas do mundo real. Tudo em português, com comentários em português.

Quero Ser Apoiador(a)


Esta classe Java poderia ser mapeada com uma tabela clientes no banco de dados usando o seguinte arquivo XML:

Este trecho de código ou resolução de exercício faz parte do Super Pack 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos em Java, Python, VisuAlg, Portugol, Delphi, C#, C, C++, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Aprenda a programar resolvendo problemas do mundo real. Tudo em português, com comentários em português.

Quero Ser Apoiador(a)


Esta é a forma usual. Veja agora como abandonar completamente o arquivo de mapeamento em XML e usar Annotations diretamente na classe Java:

Este trecho de código ou resolução de exercício faz parte do Super Pack 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos em Java, Python, VisuAlg, Portugol, Delphi, C#, C, C++, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Aprenda a programar resolvendo problemas do mundo real. Tudo em português, com comentários em português.

Quero Ser Apoiador(a)


O primeiro detalhe a observar nesta nova versão da classe Cliente é a importação do pacote javax.persistence. No Hibernate 3 este pacote está no jar hibernate-jpa-2.0-api-1.0.0.Final.jar, localizado na pasta lib/jpa. É neste pacote que encontramos os vários tipos de anotações, tais como Entity, Id, Table, etc.

Veja que antes da definição da classe nós usamos a anotação @Entity para informar que objetos desta classes são beans de entidades e, portanto, deverão possuir um construtor sem argumentos com visibilidade no mínimo protected. Como a intenção é usar esta classe para outras finalidades, podemos definir o construtor como public mesmo. Em seguida usamos a anotação @Table(name="clientes") para definir o nome da tabela no banco de dados que contém os registros que serão obtidos e convertidos em objetos da classe Cliente. Se não informarmos o nome da tabela, o Hibernate procurará por uma tabela com o nome Cliente.

Todos os beans de entidades em Hibernate devem possuir uma chave primária, que é um campo na tabela do banco de dados que identifica unicamente cada registro. Em geral a chave primária é um único campo da tabela mas, nada impede que usemos uma chave primária composta (vários campos que, quando agrupados, identificam unicamente cada registro). O campo ou propriedade da classe que será usada como chave primária é marcado com a anotação @Id. Nesta classe de exemplo eu marquei a propriedade (o método getId()) porque o campo id é privado. Se este campo fosse público, a anotação poderia ser feita no campo e não no método.

Podemos informar ao Hibernate a estratégia usada para a geração do valor da chave primária. Veja:

Este trecho de código ou resolução de exercício faz parte do Super Pack 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos em Java, Python, VisuAlg, Portugol, Delphi, C#, C, C++, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Aprenda a programar resolvendo problemas do mundo real. Tudo em português, com comentários em português.

Quero Ser Apoiador(a)


Aqui nós usamos a anotação @GeneratedValue para informar que a estratégia usada será aquela mais apropriada para cada banco de dados, o que resultará em uma chave primária do tipo auto-incremento. Podemos, contudo, omitir esta anotação, visto que este é o comportamente padrão.

Uma vez que a classe Java já esteja pronta e devidamente "anotada", precisamos informar ao Hibernate a existência desta entidade. Isso é feito no arquivo hibernate.cfg.xml da seguinte forma:

Este trecho de código ou resolução de exercício faz parte do Super Pack 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos em Java, Python, VisuAlg, Portugol, Delphi, C#, C, C++, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Aprenda a programar resolvendo problemas do mundo real. Tudo em português, com comentários em português.

Quero Ser Apoiador(a)


Finalmente devemos mudar a forma pela qual a SessionFactory é obtida. Quando estamos usando Annotations, devemos adotar a seguinte estratégia:

Este trecho de código ou resolução de exercício faz parte do Super Pack 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos em Java, Python, VisuAlg, Portugol, Delphi, C#, C, C++, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Aprenda a programar resolvendo problemas do mundo real. Tudo em português, com comentários em português.

Quero Ser Apoiador(a)


Veja o contraste com a forma usada para obter a SessionFactory quando estamos usando arquivos de mapeamento XML:

Este trecho de código ou resolução de exercício faz parte do Super Pack 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos em Java, Python, VisuAlg, Portugol, Delphi, C#, C, C++, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Aprenda a programar resolvendo problemas do mundo real. Tudo em português, com comentários em português.

Quero Ser Apoiador(a)


Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de Hibernate

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 38 usuários muito felizes estudando em nosso site.