PDF de programación - hibernate

Imágen de pdf hibernate

hibernategráfica de visualizaciones

Actualizado el 13 de Julio del 2021 (Publicado el 14 de Marzo del 2021)
514 visualizaciones desde el 14 de Marzo del 2021
445,3 KB
43 paginas
Creado hace 14a (02/03/2010)
Autentia Real Business Solutions

www.autentia.com

Hibernate
Hibernate

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

v0.0

1 – 1

Motivación de la charla

• ¿ Por qué esta charla ?

– Diferentes audiencias, mismos problemas.

www.autentia.com

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 2

Introducción

www.autentia.com

• El acceso a base de datos aparece prácticamente en

todos los proyectos, por pequeños que sean.

• El acceso a base de datos es mecánico y repetitivo.
• ¿Por qué no utilizar un sistema que nos facilite esta

tarea?

• Hibernate puede ser la solución

http://www.hibernate.org/

• Otras alternativas: EJB 3.0, JDO
– Wikipedia: object relational mapping
– http://www.javaskyline.com/database.html

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 3

Comprendiendo los principios del
O/R Mapping

www.autentia.com

• Las principales diferencias entre el mundo relacional y el

mundo orientado a objetos:

ORIENTACIÓN A OBJETOS

Clases y Objetos
Atributos
Indentidad
Relación o referencia a objetos
Herencia / Polimorfismo
Métodos
Código portable

BASES DE DATOS RELACIONALES
Tablas y Registros
Columnas
Clave Primaria
Clave Extranjera
No Soportado
Procedimientos almacenados
No necesariamente (depende del fabricante)

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 4

Comprendiendo los principios del
O/R Mapping

www.autentia.com

• El O/R Mapping consiste en representar cada tabla de la base de

datos como una clase o un conjunto de clases.

• Gracias al O/R Mapping podemos seguir trabajando con Clases

Java sin preocuparnos de la base de datos subyacente.

– Nos podemos centrar en la lógica de negocio

– Aseguramos la separación entre capas no pasando objetos propios de una

capa a la capa contigua (Connection, Statement, ResultSet, ...).

• Cuando entre dos tablas existe integridad referencial, tendremos

un clase que hace referencia a otra.

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 5

Diseñando el modelo

www.autentia.com

• Gracias a Hibernate (o cualquier otro O/R mapping

similar) nos centraremos en nuestro modelo de clases, y
NO en el modelo de tablas.

• De esta manera nuestro negocio no queda condicionado

por la capa de persistencia.

• O mínimamente condicionado. Recomendaciones de

Hibernate:
– Cada entidad debe tener un identificador.
– El identificador debe ser “nulable” (no un tipo básico).
– Cuidado con los métodos equals() y hashCode().

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 6

¿ Cómo definir el modelo ?

www.autentia.com

• Para convertir nuestras clases de negocio en entidades

persistentes tenemos dos opciones:
– Uso de anotaciones

• Muy recomendable su uso, por su sencillez.
• Apuesta por la idea de: “Convención frente a configuración”.
• Requiere Java 5 (soporte de anotaciones).
• Son las mismas anotaciones que JPA (Java Persistence API).

– Uso de descriptores en ficheros XML

• Ficheros XML externos donde se especifica todos los mapeos entre la

clase y la tabla correspondiente.

• Se necesita más tiempo para desarrollar (puesto que tenemos que

escribir dos ficheros en vez de uno)

• Mas complejo de mantener, y hay mas información redundante.

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 7

Declarar entidades

www.autentia.com

• Nuestras entidades no son más que un conjunto de

atributos privados con sus correspondientes “getters” y
“setters” (también llamado POJO – Plain Old Java
Object).
– Definir la entidad:

• @Entity

– Definir la tabla de una entidad:

• @Table(name=”Tabla”)
• Si no se especifica, se usa el nombre de la entidad.

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=hibernateAnnotations

http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 8

Mapear entidades

• ¿ Donde mapear ?

www.autentia.com

– Atributos: field access
– Métodos: property access.

• Debemos seleccionar uno de los dos mecanismos.
• Hibernate usará uno u otro en función de la posición de

las anotaciones @Id o @EmbeddedId

• No debemos mezclar.
• Se puede modificar con la anotación

– @AccessType (Hibernate)

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 9

Claves primarias

www.autentia.com

• Hibernate recomienda que cada entidad tenga al menos un

atributo que la identifique unívocamente.
– Para especificar la clave primaria: @Id
• Generación de las claves primarias:

– @GeneratedValue(strategy = GenerationType.AUTO)

• Se selecciona automáticamente la forma de generar las claves
primarias en función de la base de datos que estemos usando.

– @GeneratedValue(strategy = GenerationType.IDENTITY)
– @GeneratedValue(strategy = GenerationType.SEQUENCE)

• Claves autogeneradas por una secuencia.
• Con @SequenceGenerator especificamos los datos de la secuencia.

– @GeneratedValue(strategy = GenerationType.TABLE)

• Claves autogeneradas por una tabla.
• Con @TableGenerator especificamos los datos de la tabla.

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 10

Claves primarias compuestas

• Dos técnicas:

– Usando @EmbeddedId

• @EmbeddedId para marcar el atributo de la clave primaria en la

entidad correspondiente

www.autentia.com

• Anotar la clase de ese atributo cómo @Embeddable

– Usar a nivel de clase la anotación @IdClass (.....class) y

anotar los atributos en la clase indicada como @Id

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 11

Mapeo de atributos

www.autentia.com

– Tipos Básicos. Tipos primitivos, “wrappers” y valores

enumerados.
• @Basic
• Valor por defecto.

– Ajuste fino de tipos básicos

• Valores enumerados: @Enumerated

– Almacenar el ordinal: @Enumerated(EnumType.ORDINAL) (por defecto)
– Almacenar el texto: @Enumerated(EnumType.STRING)

• Objetos largos: @Lob (BLOB y CLOB)
• Tiempo:

– @Temporal(TemporalType.DATE)
– @Temporal(TemporalType.TIME)
– @Temporal(TemporalType.TIMESTAMP)

java.sql.Date
java.sql.Time
java.sql.Timestamp

• Atributo no persistente: @Transient

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 12

Mapeo de relaciones

• Especificar las relaciones entre entidades suele ser la

parte más complicada de cualquier O/R Mapping.

• Con las anotaciones se simplifica bastante el problema.

www.autentia.com

– Principales anotaciones (la izquierda se refiere a

“this” y la derecha a la otra entidad):
• @OneToOne
• @ManyToOne
• @OneToMany
• @ManyToMany

– Para refinar como se refleja la relación de las entidades en la

base de datos:
• @JoinColumn (ManyToOne)
• @JoinTable (ManyToMany)

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 13

Mapeo de relaciones

• Relación one-to-one: Se pueden usar diferentes

técnicas
– Compartiendo PK

www.autentia.com

– Usando @Embedded y @Embeddable

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 14

Mapeo de relaciones

• Relación one-to-one: Se pueden usar diferentes

técnicas (cont.)
– A través de FK

www.autentia.com

– A través de tabla intermedia.

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 15

Mapeo de relaciones

• Relación many-to-one: Dos técnicas:

– Usando FK.

www.autentia.com

– Usando tabla intermedia.

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 16

Mapeo de relaciones

• Relación one-to-many.

– A la hora de mapear este tipo de relaciones es necesario

identificar si es bidireccional o no.

– En relaciones bidireccionales, dos técnicas:

• FK

www.autentia.com

• Tabla Intermedia (ver anterior)

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 17

Mapeo de relaciones

• Relación one-to-many (cont.)

En relaciones unidireccionales, dos técnicas:
• Usando FK (no recomendado por Hibernate)

www.autentia.com

• Usando Tabla Intermedia.

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 18

Mapeo de las relaciones

• Many-to-Many.

– Sólo una posibilidad. A través de tabla intermedia.

www.autentia.com

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 19

No simetría de las relaciones

www.autentia.com

• En relaciones bidireccionales (mapeadas en ambos

lados) uno de los lados es el encargado de manejar la
relación. El otro lado no es más que un “espejo”.

• Esto puede producir errores “inesperados” si no se tiene

claro este concepto.

Esta obra está licenciada bajo licencia
Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5.

1 – 20

No simetría de las relaciones

• Para evitar problemas podemos programar de manera

“defensiva” creando métodos que se encarguen de
manejar correctamente la relación (suponemos una
relación many-to-many entre Persona y Evento):

www.autentia.com

...
// Clase Persona
...

...
// Clase Persona
...

protected List getEventos() {
  • Links de descarga
http://lwp-l.com/pdf18993

Comentarios de: hibernate (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad