1
Universidade Positivo
Modelo Necessrio
Modelo Necessrio
2
Universidade Positivo
Dados Transientes
3
Universidade Positivo
Mapeando Relacionamentos
4
Universidade Positivo
One to One Um para Um
Anotao @OneToOne
Ex.: um estado tem um governador e um governador
governa somente um estado
5
Universidade Positivo
One to One Um para Um
@Entity
public class Governador { A anotao @JoinColumn
6
Universidade Positivo
Many To One Muitos Para Um
Anotao @ManyToOne
Ex.: Muitos animais pertencem a uma pessoa, e uma
pessoa pode ter muitos animais
7
Universidade Positivo
Many To One Muitos Para Um
@Entity
@Table(name="ANIMAL")
public class Animal {
...
@ManyToOne
@JoinColumn(name = "pessoa_id")
private Pessoa dono;
...
}
8
Universidade Positivo
One To Many Um Para Muitos
Anotao @OneToMany
Ex.: Uma pessoa possui vrios animais e um animal possui
somente um dono.
9
Universidade Positivo
One To Many Um Para Muitos
Em @JoinColumn
- name indica o nome da coluna
@Entity da tabela animal que referencia a
@Table(name="pessoa") pessoa
- referencedColumnName indica
public class Pessoa {
o nome da coluna de id da tabela
pessoa referenciada pelo animal
@OneToMany
@JoinColumn(name="pessoa_id",referencedColumnName="pessoa
_id")
private List<Animal> animais;
...
}
10
Universidade Positivo
Many To Many Muitos para Muitos
Anotao @ManyToMany
Ex.: Um animal pode possuir vrias alergias, e uma alergia
pode estar associada a vrios animais.
11
Universidade Positivo
Many To Many Muitos para Muitos
@Entity
@Table(name="ANIMAL")
public class Animal {
...
@ManyToMany
@JoinTable(name="alergiaanimal",
joinColumns={@JoinColumn(name="animal_id",
referencedColumnName="animal_id")},
inverseJoinColumns={@JoinColumn
(name="alergia_id",referencedColumnName="alergia_id")})
private List<Alergia> alergias;
12
Universidade Positivo
Many To Many Muitos para Muitos
13
Universidade Positivo
Relacionamentos Bidirecionais
14
Universidade Positivo
Relacionamentos Bidirecionais
15
Universidade Positivo
Mapeando Entidades com chaves compostas com
@EmbeddedId
16
Universidade Positivo
Mapeando Entidades com chaves compostas com
@EmbeddedId
@Embeddable
public class VacinaAnimalPK implements Serializable{
private static final long serialVersionUID = 1L;
@Column(name="vacina_id")
private Integer idVacina;
@Column(name="animal_id")
private Integer idAnimal;
private Date dataVacinacao;
...
}
17
Universidade Positivo
Mapeando Entidades com chaves compostas com
@EmbeddedId
18
Universidade Positivo
Mapeando Entidades com chaves compostas com
@EmbeddedId
@Entity
@Table(name="vacinaanimal")
public class VacinaAnimal {
@EmbeddedId
private VacinaAnimalPK id;
...
}
19
Universidade Positivo
Mapeando Entidades com chaves compostas com
@EmbeddedId
20
Universidade Positivo
Mapeando Entidades com chaves compostas com
@EmbeddedId
@EmbeddedId
private VacinaAnimalPK id;
@ManyToOne
@JoinColumn(name = "vacina_id", insertable = false, updatable = false)
private Vacina vacina;
...
}
21
Universidade Positivo
Mapeando Entidades com chaves compostas com
@EmbeddedId
22
Universidade Positivo
Mapeando Entidades com chaves compostas com
@EmbeddedId
24
Universidade Positivo
Eager em Mltiplas Listas
25
Universidade Positivo
Eager em Mltiplas Listas
26
Universidade Positivo
Eager em Mltiplas Listas
Possveis solues
Apenas uma das listas deve ser eager
Utilziar sets ao invs de listas
Utilizar anotaes especficas do Hibernate
Exemplo: @Fetch(value = FetchMode.SUBSELECT)
27
Universidade Positivo