Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas de persistencia de
objetos
Entidades
nov-08
alb@uniovi.es
Value Types
nov-08
alb@uniovi.es
No es posible
nov-08
alb@uniovi.es
Representacin UML de VT
equivalentes
nov-08
alb@uniovi.es
Representacin en Java
nov-08
alb@uniovi.es
Alternativa: inmutables
nov-08
alb@uniovi.es
Cuidado en getters
Peligro!!!
Seguro, String es inmutable
Peligro!!!
nov-08
alb@uniovi.es
nov-08
alb@uniovi.es
nov-08
10
nov-08
alb@uniovi.es
11
nov-08
alb@uniovi.es
12
nov-08
alb@uniovi.es
13
POJOs JPA
nov-08
14
nov-08
alb@uniovi.es
15
Metadatos en annotations
@Entity entidades
@Embeddable Value Types
La posicin de @Id determina el modo
de acceso del motor de persistencia a
los atributos
nov-08
16
Metadatos en XML
En fichero orm.xml
En persistence.xml
nov-08
17
nov-08
alb@uniovi.es
18
Categoras de anotaciones
Entity
Database Schema
Identity
Direct Mappings
Relationship
mappins
Composition
nov-08
Inheritance
Locking
Lifecycle
Entity Manager
Queries
alb@uniovi.es
19
nov-08
alb@uniovi.es
20
nov-08
alb@uniovi.es
21
Mapeo de clases
nov-08
alb@uniovi.es
22
Entidades
@Entity
@Table
nov-08
alb@uniovi.es
23
@Colum
nov-08
alb@uniovi.es
24
@Column, atributos
nov-08
alb@uniovi.es
25
@Embeddable
nov-08
alb@uniovi.es
26
@Basic
Aplicable a:
nov-08
alb@uniovi.es
27
@Enumerated
EnumType.ORDINAL
EnumType.STRING
En BDD se crear un
campo tipo INTEGER o
VARCHAR
nov-08
alb@uniovi.es
28
@Temporal
@Temporal
nov-08
alb@uniovi.es
29
@Lob,@Transient
@Lob
@Transient
nov-08
alb@uniovi.es
30
nov-08
alb@uniovi.es
31
nov-08
alb@uniovi.es
32
Mapeo de clases
nov-08
alb@uniovi.es
33
Identity vs equality
Java identity
Object equality
Database identity
a.getId().equals(b.getId())
clave primaria de la tabla
Se mapean con la etiqueta <id>
Por ello todas las clases Entidad deben tener identificador,
identificador
usualmente un Long
nov-08
alb@uniovi.es
34
Identidad de BBDD
protected
nov-08
alb@uniovi.es
35
Tipos de claves
Claves candidatas
Claves naturales
Business keys
Claves artificiales (subrogadas)
Cual es mejor para
formar la clave primaria?
nov-08
alb@uniovi.es
36
Clave candidata
Condiciones
nov-08
alb@uniovi.es
37
Claves naturales
DNI
N de la SS
nov-08
Y si nos equivocamos
al dar el alta?, luego no
se puede cambiar
38
Business keys
nov-08
alb@uniovi.es
39
JPA
Hib
alb@uniovi.es
40
Estrategia recomendable
nov-08
alb@uniovi.es
41
@Id
nov-08
Una @Id
Multiple @Id y una @IdClass para la clase
que forma clave (clave compuesta)
Una @EmbeddedId
alb@uniovi.es
42
@GeneratedValue
nov-08
alb@uniovi.es
43
nov-08
alb@uniovi.es
44
HashCode() y equals()
nov-08
alb@uniovi.es
45
HashCode() y equals()
nov-08
alb@uniovi.es
46
Mapeo de clases
nov-08
alb@uniovi.es
47
nov-08
48
nov-08
alb@uniovi.es
49
Referencias
A entidades
A value types
nov-08
alb@uniovi.es
50
Ejemplo
nov-08
alb@uniovi.es
51
Mapeos
nov-08
alb@uniovi.es
52
Mapeo de clases
nov-08
alb@uniovi.es
53
JPA permite 3
Tabla por cada clase no abstracta
InheritanceType.TABLE_PER_CLASS
InheritanceType.JOINED
nov-08
InheritanceType.SINGLE_TABLE
alb@uniovi.es
54
InheritanceType.TABLE_PER_CLASS
Ventajas
Recomendable
nov-08
alb@uniovi.es
55
nov-08
alb@uniovi.es
56
nov-08
alb@uniovi.es
57
InheritanceType.SINGLE_TABLE
Es simple y eficiente
Soporta el polimorfismo
Fcil de implementar
Fcil modificar cualquier clase
Desventaja
nov-08
58
Mapeo
Recomendacin
nov-08
alb@uniovi.es
59
nov-08
alb@uniovi.es
60
@DiscriminatorColumn,
@DiscriminatorValue
no son necesarios, se toman valores por
defecto si no estn presentes
nov-08
alb@uniovi.es
61
InheritanceType.JOINED
Desventaja
nov-08
62
Recomendacin
nov-08
alb@uniovi.es
63
nov-08
alb@uniovi.es
64
nov-08
alb@uniovi.es
65
Mapeo de clases
nov-08
alb@uniovi.es
66
nov-08
alb@uniovi.es
67
Forma de inicializar
colecciones
Siempre se declara
el Interfaz genrico
Siempre se inicializan
en la declaracin, no
en el constructor
nov-08
alb@uniovi.es
Siempre se asigna
una clase de
implementacin
compatible con el
interfaz
68
Lo ms usado
para colecciones
nov-08
alb@uniovi.es
69
Mapeo de Set
@Column, @JoinTable
opcionales, solo
fuerzan nombres de
tabla y columna
La clave de ITEM_IMAGE
es compuesta para evitar
duplicados en el mismo
ITEM (un set no los
admite)
nov-08
alb@uniovi.es
70
Mapeo de List
@Column, @JoinTable
opcionales
Perserva el
orden
nov-08
alb@uniovi.es
71
Mapeo de Bag
nov-08
alb@uniovi.es
72
Mapeo de Map
@Column, @JoinTable
opcionales
alb@uniovi.es
73
En hibernate no es lo mismo
nov-08
alb@uniovi.es
74
Sorted collections
Solo para Set y Map
(se hace en JVM)
nov-08
alb@uniovi.es
75
Ordered collections
nov-08
alb@uniovi.es
76
Colecciones de
componentes
nov-08
alb@uniovi.es
77
Mapeo de clases
nov-08
alb@uniovi.es
78
No son gestionadas
nov-08
alb@uniovi.es
79
Asociaciones en Java
Si la relacin es bidireccional
siempre hay que establecer la
relacin en las dos clases
Se podra aadir un mtodo
como este para gestionar de
forma cmoda la relacin
nov-08
alb@uniovi.es
80
Multiplicidad en JPA
one-to-one
many-to-many
one-to-many
many-to-one
nov-08
alb@uniovi.es
81
nov-08
alb@uniovi.es
82
Doble actualizacin
nov-08
alb@uniovi.es
83
La doble actualizacin
alb@uniovi.es
84
Propagacin en cascada
Si no hay cascada
hay que salvar los
dos objetos aunque
estn asociados
nov-08
alb@uniovi.es
85
Cascada o persistencia
transitiva
En doc de referencia
buscar tipos de cascada
Transitive persistence
nov-08
alb@uniovi.es
86
nov-08
alb@uniovi.es
87
ALL
MERGE
PERSIST
REFRESH
REMOVE
nov-08
alb@uniovi.es
88
Cascada delete-orphan
nov-08
alb@uniovi.es
89
En la clase que no
tiene la FK
nov-08
alb@uniovi.es
90
nov-08
91
Uno a uno
misma Clave
Con este generador toma la
clave de la otra
nov-08
alb@uniovi.es
92
nov-08
alb@uniovi.es
93
nov-08
alb@uniovi.es
94
Dos @JoinColumn
nov-08
alb@uniovi.es
95
a Muchos @OrderBy
alb@uniovi.es
96
Muchos a muchos
unidireccional
Se puede hacer
tambin con List
e idBag
nov-08
alb@uniovi.es
97
Muchos a muchos
bidireccional
@JoinTable opcional
nov-08
alb@uniovi.es
98
alb@uniovi.es
99
Clase asociativa
...
nov-08
alb@uniovi.es
100
Clave compuesta:
la clase Id debe cumplir
unas condiciones
nov-08
alb@uniovi.es
101
nov-08
alb@uniovi.es
102