Hibernate - Mapeamentos O / R
Até agora, vimos o mapeamento O / R muito básico usando o hibernate, mas existem três tópicos de mapeamento mais importantes, que precisamos aprender em detalhes.
Estes são -
- Mapeamento de coleções,
- Mapeamento de associações entre classes de entidade, e
- Mapeamentos de componentes.
Mapeamentos de coleções
Se uma entidade ou classe tem coleção de valores para uma variável particular, então podemos mapear esses valores usando qualquer uma das interfaces de coleção disponíveis em java. O Hibernate pode persistir instâncias dejava.util.Map, java.util.Set, java.util.SortedMap, java.util.SortedSet, java.util.List, e qualquer array de entidades ou valores persistentes.
Sr. Não. | Tipo de coleção e descrição de mapeamento |
---|---|
1 | java.util.Set Isso é mapeado com um elemento <set> e inicializado com java.util.HashSet |
2 | java.util.SortedSet Isso é mapeado com um elemento <set> e inicializado com java.util.TreeSet. osort atributo pode ser definido como um comparador ou ordenação natural. |
3 | java.util.List Isso é mapeado com um elemento <list> e inicializado com java.util.ArrayList |
4 | java.util.Collection Isso é mapeado com um elemento <bag> ou <ibag> e inicializado com java.util.ArrayList |
5 | java.util.Map Isso é mapeado com um elemento <map> e inicializado com java.util.HashMap |
6 | java.util.SortedMap Isso é mapeado com um elemento <map> e inicializado com java.util.TreeMap. osort atributo pode ser definido como um comparador ou ordenação natural. |
Arrays são suportados pelo Hibernate com <primitive-array> para tipos de valores primitivos Java e <array> para todo o resto. No entanto, eles raramente são usados, então não irei discuti-los neste tutorial.
Se você deseja mapear as interfaces de coleção definidas pelo usuário, que não são diretamente suportadas pelo Hibernate, você precisa informar ao Hibernate sobre a semântica de suas coleções personalizadas, o que não é muito fácil e não recomendado para ser usado.
Mapeamentos de associação
O mapeamento de associações entre classes de entidades e os relacionamentos entre tabelas é a alma do ORM. A seguir estão as quatro maneiras pelas quais a cardinalidade da relação entre os objetos pode ser expressa. Um mapeamento de associação pode ser unidirecional ou bidirecional.
Sr. Não. | Tipo de mapeamento e descrição |
---|---|
1 | Muitos para Um Mapeando relacionamento muitos-para-um usando Hibernate |
2 | Um a um Mapeando relacionamento um-para-um usando Hibernate |
3 | Um para muitos Mapeando relacionamento um-para-muitos usando Hibernate |
4 | Muitos para muitos Mapeando relacionamento muitos-para-muitos usando Hibernate |
Mapeamentos de componentes
É muito possível que uma classe Entity possa ter uma referência a outra classe como uma variável de membro. Se a classe referida não tem seu próprio ciclo de vida e depende completamente do ciclo de vida da classe de entidade proprietária, então a classe referida, portanto, é chamada deComponent class.
O mapeamento de Coleções de Componentes também é possível de maneira semelhante, assim como o mapeamento de Coleções regulares com pequenas diferenças de configuração. Veremos esses dois mapeamentos em detalhes com exemplos.
Sr. Não. | Tipo de mapeamento e descrição |
---|---|
1 | Mapeamentos de componentes Mapeamento para uma classe tendo uma referência a outra classe como uma variável de membro. |