ques es dios
Información 2
Clase 8
Java Persistence API
Persistencia en Java
JDBC (Java Database Connectivity)
Enterprise JavaBeans
o Entity Beans
JDO (Java Data Objects)
ORMs
o Hibernate
o Toplink
JPA (Java Persistence API)
o Estándar
INCO - Facultad de Ingeniería – Montevideo, Uruguay
2
Object Relational Mapping
Un ORM (ObjectRelational Mapping) define
una forma de transformar un modelo
orientado a objetos en un modelo relacional
Hay muchas formas de llevar a cabo tal
transformación
Impedance Mismatch
INCO - Facultad de Ingeniería – Montevideo, Uruguay
3
Impedance Mismatch
Se refiere a la diferencia de paradigmas
existentes entre el modelo orientado a
objetos y el modelo relacional
Debido a los diferentes objetivos de ambas
tecnologías, por lo general tenemos gran
dificultad en realizar este mapeo
INCO - Facultad de Ingeniería – Montevideo, Uruguay
4
Impedance Mismatch
INCO - Facultad de Ingeniería – Montevideo, Uruguay
5
Impedance Mismatch
INCO - Facultad de Ingeniería – Montevideo, Uruguay
6
Impedance Mismatch
INCO - Facultad deIngeniería – Montevideo, Uruguay
7
Diferencias entre modelos
INCO - Facultad de Ingeniería – Montevideo, Uruguay
8
Requisitos de una Entity JPA
Se anotan con @Entity
Tienen una propiedad anotada con @Id
Constructor sin argumentos public/protected
No puede ser final
Puede extender de otra
Puede ser abstracta
Es un POJO (Plain Old Java Objects), objeto
liviano que noimplementan ninguna interfaz
INCO - Facultad de Ingeniería – Montevideo, Uruguay
9
Estado Persistente
Definido por atributos con visibilidad no
pública (privada, protegida, o de paquete)
Atributos persistentes
o
o
o
o
Tipos primitivos
Wrappers de tipos primitivos
Otras entidades
Colecciones
INCO - Facultad de Ingeniería – Montevideo, Uruguay
10
Entity JPA- Ejemplo
@Entity
public class Employee {
@Id private int id;
private String name;
private long salary;
public Employee() {}
public Employee(int id) { this.id = id; }
public int getId() { return id; }
public void setId(int id) { this.id = id; }
INCO - Facultad de Ingeniería – Montevideo, Uruguay
11
Entity JPA - Ejemplo
public String getName() { return name; }
public voidsetName(String name) {
this.name = name;
}
public long getSalary() { return salary; }
public void setSalary (long salary) {
this.salary = salary; }
}
INCO - Facultad de Ingeniería – Montevideo, Uruguay
12
@Table
Es una anotación opcional
Por defecto, la entidad se mapea en el
esquema actual, a una tabla con el mismo
nombre que la entidad
INCO - Facultad de Ingeniería– Montevideo, Uruguay
13
@UniqueConstraints
Permite definir restricciones de integridad
sobre la tabla que estamos creando
En general es usada cuando utilizamos la
facilidad de auto-creación de esquema
@Table(name="CATEGORIES",
uniqueConstraints=
{@UniqueConstraint(
columnNames={"CATEGORY_ID"})
}
)
INCO - Facultad de Ingeniería – Montevideo, Uruguay
14
@Column
Mapea una propiedad o campo persistente a
una columna de una tabla de la base de
datos
@Column(name="USER_ID")
protected Long userId;
INCO - Facultad de Ingeniería – Montevideo, Uruguay
15
@Column
String name
boolean unique
boolean nullable
String table
length (255)
@Column(name=“DESC”,
nullable=false,
length=512, ...
)
private String description;INCO - Facultad de Ingeniería – Montevideo, Uruguay
16
@Enumerated
Permite mapear enumerados en columnas
de la base de datos
o
public enum UserType {SELLER, ADMIN};
Al persistir, tenemos dos opciones
o
o
Salvar el ordinal
Salvar el string
INCO - Facultad de Ingeniería – Montevideo, Uruguay
17
@Enumerated
Salvamos 0, 1
o
o
Salvamos los...
Regístrate para leer el documento completo.