Mapeo de Clases
Sistemas de persistencia de
objetos
Entidades
Un entidad representa un concepto del
dominio
Puede estar asociada con otras
entidades
Su ciclo de vida es independiente
Debe tener una clave primaria
nov-08
alb@uniovi.es
2
Value Types
Representan información adicional, no
conceptos principales de dominio
Se suelen presentar como atributos de
una entidado como composiciones
(UML)
Su ciclo de vida depende enteramente
de la entidad que las posee
No pueden tener referencias entrantes
nov-08
alb@uniovi.es
3
VT, no referencias entrantes
No es posible
nov-08
alb@uniovi.es
4
Representación UML de VT
equivalentes
nov-08
alb@uniovi.es
5
Representación en Java
nov-08
alb@uniovi.es
6
Paso de ValueTypes
Siempre por copia
En java por defecto se pasan referencias
Problemas al recibir en setters
Cuidado con los getters
Alternativa: inmutables
Las clases básicas del JDK
String, Integer, Long, Double, etc
nov-08
alb@uniovi.es
7
Cuidado en getters
Peligro!!!
Seguro, String es inmutable
Peligro!!!
nov-08
alb@uniovi.es
8
Getters pueden romper
encapsulaciónnov-08
alb@uniovi.es
9
POJO (plain old java objects)
Las clases que necesitan ser persistentes son
clases java planas (java beans)
Tienen que respetar un mínimo convenio de
nombrado
Setters/getters, constructor sin parámetros, etc.
La información necesaria para persistencia se
añade en forma de metadatos
Hibernate nativo
xml, hibernate annotations
JPA
annotations, xmlnov-08
alb@uniovi.es
10
POJO Ejemplo (entidad)
nov-08
alb@uniovi.es
11
POJO Ejemplo (entidad)
nov-08
alb@uniovi.es
12
POJO Ejemplo (Value Object)
No lleva @Id
Tipo de acceso (field,
property) igual al de la
clase que lo incluye
nov-08
alb@uniovi.es
13
POJOs JPA
Constructor sin parámetros obligatorio
Identificador
Preferiblemente no tiposbásicos (int, long, etc.), mejor tipos
nullables (Integer, Long, etc.)
Mejor no claves compuestas
Se corresponderán con la clave primaria de la tabla
Getters y Setters (get/set/is) para cada atributo
pueden ser privados
JPA puede usar los setters al cargar un objeto para ajustar
sus atributos
Colecciones para asociaciones many
Puede ser Set, List, Map o Collection
Setters y getterspueden ser privados
nov-08
alb@uniovi.es
14
Persistencia de campos en JPA
Todos tipos JDK tienen persistencia
automática
Campos de otro tipo:
Referencias a ValueTypes: si son de clases
@Embeddable todos los campos a la misma
tabla
Referencias a Entidades: son relaciones, no
campos. FK a la tabla de @Entity
Resto de casos, serialización
Debe implementar Serializable
nov-08alb@uniovi.es
15
Metadatos en annotations
@Entity
entidades
@Embeddable
Value Types
La posición de @Id determina el modo
de acceso del motor de persistencia a
los atributos
Acceso “field” (public, private, protected, package)
Acceso “properties” (a través de get/set)
getters y setters public o protected
nov-08
alb@uniovi.es
16
Metadatos en XML
En fichero orm.xml
Enpersistence.xml
Fichero referenciados desde
persistence.xml
XML revoca las indicaciones de
Annotations
En deploy pueden se pueden ajustar
rendimientos sin tocar código fuente
nov-08
alb@uniovi.es
17
Metadatos xml, ejemplo
nov-08
alb@uniovi.es
18
Categorías de anotaciones
Entity
Database Schema
Identity
Direct Mappings
Relationship
mappins
Composition
nov-08Inheritance
Locking
Lifecycle
Entity Manager
Queries
alb@uniovi.es
19
Anotaciones por categoría
nov-08
alb@uniovi.es
20
Anotaciones por categoría
nov-08
alb@uniovi.es
21
Mapeo de clases
nov-08
alb@uniovi.es
22
Entidades
@Entity
Marca una clase como entidad
Atributo “name” opcional
será el usado
en las queries
@Table
nov-08...
Regístrate para leer el documento completo.