Download Mapeo Objeto – Relacional JPA – Java Persistence Api

Document related concepts
no text concepts found
Transcript
Mapeo Objeto – Relacional
JPA – Java Persistence Api
Agenda
•
•
•
•
•
Mapeo Objeto relacional
Persistencia
Entidades
Principales anotaciones para mapear entidades
Anotaciones para definir las relaciones entre las
entidades
• Caso de estudio
Object-Relational Mapping (Mapeo Objeto Relacional)
Es una técnica en la que se las tablas, columnas y
relaciones de una base de datos se convierten a
clases, atributos y tipos de datos de un lenguaje de
programación orientado a objetos, creando una base
de datos virtual.
Object-Relational Mapping (Mapeo Objeto Relacional)
Esto nos permiten trabajar con objetos, en vez de
tablas y columnas, donde un registro en una tabla se
representa por una instancia de la entidad. Este
mapeo permite generar automáticamente el código
SQL necesario para consultar y actualizar la base de
datos.
Object-Relational Mapping (Mapeo Objeto Relacional)
Mayor independencia entre la aplicación y el motor
de la Base de Datos.
Facilita el manejar tipos de datos del lenguaje de
programación y la Base de Datos.
Persistencia
La persistencia permite al programador almacenar,
transferir y recuperar información entre los objetos y
las Bases de Datos, según el mapeo creado.
Utiliza un motor que busca solucionar la diferencia
entre los modelos de manipulación de datos del
Lenguaje de Programación y el manejador de Base
de Datos. Por ejem. Hibernate.
Java Persistence API (API de Persistencia De Java)
Provee el mapeo entre el mundo de objetos /
relacional para los desarrolladores Java; sirve para
manejar datos relacionales en aplicaciones Java. Se
divide en tres áreas:
El Api de persistencia de Java
El JPQL: lenguaje de consulta
Objeto / Relacional metadata de mapeo.
Entidades
Es un objeto de dominio que tiene persistencia en la
base de datos. Típicamente una Entidad representa
una tabla; cada instancia de la entidad corresponde a
un registro en la tabla.
Es representada por medio de campos de
persistencia o por propiedades de persistencia. Estos
campos o propiedades usan anotaciones para
representar las entidades o relaciones entre
entidades, con los datos relacionales en la base de
datos.
Anotaciones de definición de Entidades
Anotación
Clase
Explicación
@Entity
javax.persistence.Entity
Define una clase como entidad.
@Table
javax.persistence.Table
Define la tabla que va a ser mapeada.
Anotaciones de definición de Datos de Entidades
Anotación
Clase
Explicación
@Id
javax.persistence.Id
Denota el campo que será el identificador
único para la entidad.
@Column
javax.persistence.Column
Define el mapeo entre una columna de la tabla
con un atributo o propiedad de la entidad.
@NotNull
org.hibernate.validator.NotNull
Denota que un campo debe ser obligatorio.
@Temporal
javax.persistence.Temporal
Especifica el tipo del atributo como un
java.util.Date o java.util.Calendar, se utiliza
para definir un campo como fecha corta, o tipo
Time.
@Transient
javax.persistence.Transient
Marca un campo o propiedad como no
persistente.
@Embedded
javax.persistence.Embedded
Especifica que un campo de persistencia de
una entidad o una propiedad es una clase
embebida.
@Embeddable
javax.persistence.Embeddable
Define una clase como embebida, es decir, se
puede utilizar como atributo de otra entidad.
Anotaciones de definición de relaciones entre Entidades
@ManyToOne: Define la relación de Muchos a Uno.
Múltiples instancias de una entidad se relacionan con
una instancia simple de otra entidad. Usa:
javax.persistence.ManyToOne.
@ManyToMany: Establece la relación de Muchos a
Muchos. Las instancias de la entidad pueden estar
relacionadas con varias instancias de otra entidad.
Usa: javax.persistence.ManyToMany.
Anotaciones de definición de relaciones entre Entidades
@OneToOne: Define la relación de Uno a Uno. Cada
entidad se relaciona con una sola instancia de la otra
entidad. Usa: javax.persistence.OneToOne.
@OneToMany: Define la relación de Uno a Muchos.
Una entidad está relacionada con múltiples
instancias
de
otra
entidad.
Usa:
javax.persistence.OneToMany.
Anotaciones de definición de relaciones entre Entidades
@JoinColumn: Denota el nombre de la columna de
la tabla a la cual es mapeada la entidad, y con la cual
se
establece
la
relación.
Usa:
javax.persistence.JoinColumn.
@JoinColumns: Define el mapeo de la columna con
la entidad por medio de llaves compuestas. Usa:
javax.persistence.JoinColumns.
Tipos de Cargas de Entidades
LAZY: esto quiere decir que no realiza la consulta
del atributo relacionado, cuando se instancia la
entidad sino cuando se hace el llamado al método
get correspondiente al atributo.
EAGER: Al instanciar la entidad inmediatamente se
realiza la consulta del atributo relacionado.
Mapeo de Entidad con llave compuesta
Cuando se necesita mapear una tabla en la cual su
llave principal son dos o mas atributos es necesario
crear otra clase con estos atributos.
En la clase de llave compuesta se utiliza la anotación
@Embeddable.
En la entidad se crea como atributo una instancia de
la clase anterior y se debe colocar la anotación:
@EmbeddedId.
Pasos para mapear una Tabla
Ubicar el directorio correspondiente donde se
guardará la entidad teniendo en cuanta la
convención de definición de paquetes.
Los nombres de las clases deben iniciar siempre en
mayúscula, deben ser simples y descriptivos.
Los nombres de las clases de Entidad deben ser
sustantivos en singular.
Pasos para mapear una Tabla
Posicionar encima de la definición de la Clase, las
anotaciones de Entidad como: @Entity, @Table.
Caso de Estudio
Se requiere elaborar una aplicación para llevar el
registro y control de los elementos y materiales de
laboratorio que se le prestan a los estudiantes o
docentes, estos elementos pueden ser fuentes de
poder,
voltímetros
y
diferentes
dispositivos
electrónicos.
Un auxiliar es el encargado de prestar los elementos
y registrar los datos de salida y entrada de los
elementos, tambien se requiere llevar el controlo de
las materias en las cuales se utiliza el elemento.
Caso de estudio – Diagrama Entidad Relación
Tipo_equipo
id
nombre
1
N
equipo
id
modelo
fecha_ingreso
descripcion
marca
serie
id_estado
Disponible
Id_tipo_equipo
N
1
N
1
1
N
facultad_usuario
Id_facultad
Id_usuario
N
1
Historico_prestamo
Id
tag_equipo
id_usuario
fecha_salida
Hora_salida
fecha_entrada
Hora_entrada
id_salon
id_estadorecibido
Observaciones
id_materia
Id_usuario_auxiliar
1
N
N
1
N
1
estado
id
nombre
1
usuario
Id_usuario
nombre
apellido
id_rol
password
1
facultad
id
Nombre
rol
id
nombre
N
1
N
N
1
salon
id
nombre
Materia
id
Nombre
Id_facultad
N
Conexión a la Base de datos
Host: sandbox2.ufps.edu.co
Usuario: userJee6
Password: userJee6
Gracias por su atención
M.Sc. FREDY H. VERA R
[email protected]
Cúcuta - 2013