Sie sind auf Seite 1von 21

Ing. Elkin Doney Surez Gmez Esp. Gerencia de Proyectos Candidato MBA edsuarez@uis.edu.

co

JAVA PERSISTENCE API JPA


Diplomado Especializado en Diseo y Desarrollo de Aplicaciones Distribuidas con Arquitectura Java EE

QUE ES JAVA PERSISTENCE API?

Es un modelo de persistencia basado en POJOs para mapear bases de datos relacionales en Java. Es un modelo de persistencia que usa anotaciones en las entidades, no se requiere usar archivos descriptores XML. Es un modelo de persistencia que consiste en 4 reas:
JPA (javax.persistence). El lenguaje de consultas. La Java Persistence Criteria API. La metadata del mapeo objeto/relacional.

ENTIDAD I

Es una clase con anotaciones que representa a una tabla de una Base de Datos. Las anotaciones requeridas son:

@Entity del paquete (javax.persistence.Entity). Con est anotacin se le indica al motor de persistencia que la clase es una Entidad. @Table(name =nombre_base_datos:nombre_tabla") del paquete (javax.persistence.Table). Con est anotacin se le indica el nombre de la tabla y a cual base de datos pertenece.

La entidad debe tener un mtodo get/set para cada atributo.

ENTIDAD II
La entidad debe implementar la interfaz Serializable del paquete (java.io) til para la persistencia de objetos. La interfaz no tiene mtodos solo sirve para identificar de que es serializable. Cualquier subclase de una clase serializable tambin lo es. La entidad serializable debe llevar el siguiente atributo, generado por el IDE Jboss Developer Studio.

Todos los atributos de la entidad deben ser tipo Objeto o Tipo entidad. La entidad debe sobre escribir los mtodos hashCode() y equals(Object obj) de la clase Object, solo para el atributo llave de la entidad.

ANOTACIONES BSICAS

@Id del paquete (javax.persistence.Id). Con est anotacin se identifica el atributo que contiene la persistent identity de la entidad(la llave primaria). @GeneratedValue(strategy = GenerationType.AUTO) del paquete (javax.persistence.GeneratedValue y javax.persistence.GenerationType). Con est anotacin se le indica que el campo llave es autoincremental realizado por el motor de base de datos. @Column (name= nombre_del_campo") del paquete (javax.persistence.Column). Con est anotacin se le indica el nombre de la columna de la tabla.

VALIDACIONES

@NotNull del paquete (org.hibernate.validator.NotNull). Con est anotacin el valor del atributo no debe ser null. @Length del paquete (org.hibernate.validator.Length). Con esta anotacin la longitud de un atributo debe estar en el rango.

@Range del paquete (org.hibernate.validator.Range). Con est anotacin el valor del atributo numrico debe estar en el rango. @Email del paquete (org.hibernate.validator.Email). Con est anotacin la cadena del atributo representa un patrn email.

RELACIONES ENTRE ENTIDADES I

@ManyToOne(fetch=FetchType.LAZY) @ManyToOne(fetch=FetchType.EAGER) del paquete (javax.persistence.ManyToOne). @JoinColumn(name=nombre_del_campo", referencedColumnName= nombre_del_campo") del paquete (javax.persistence.JoinColumn).

RELACIONES ENTRE ENTIDADES II

@OneToMany(mappedBy = "atributo_maestro", fetch = FetchType.LAZY) del paquete (javax.persistence.OneToMany).

RELACIONES ENTRE ENTIDADES III


@ManyToMany(fetch=FetchType.LAZY) del paquete (javax.persistence.ManyToMany). @JoinTable(name = "tabla_intermedia", joinColumns = @JoinColumn(name="nombre_del_campo",referencedColumnName="nombre_del_campo"), inverseJoinColumns = { @JoinColumn(name="nombre_del_campo", referencedColumnName="nombre_del_campo")})

RELACIONES ENTRE ENTIDADES IV

RELACIONES ENTRE ENTIDADES V

@OneToOne(fetch=FetchType.LAZY) del paquete (javax.persistence.ManyToMany).

RELACIONES ENTRE ENTIDADES VI

@OneToOne(fetch=FetchType.LAZY) del paquete (javax.persistence.ManyToMany).

ENTIDADES CON LLAVES COMPUESTAS I

ENTIDADES CON LLAVES COMPUESTAS II

ENTIDADES CON LLAVES COMPUESTAS III

OTRAS ANOTACIONES I

@Transient del paquete (javax.persistence.Transient). Con est anotacin el atributo no es persistente. (No hace referencia a ninguna columna de la tabla).

@Lob del paquete (javax.persistence.Lob). Con est anotacin se le indica al atributo que el contenido de un campo bsico ser guardado como LOB (Large OBject). Si por ejemplo utilizamos esta anotacin para marcar un campo que contenta un String o caracteres el framework lo mapear a una columna CLOB (Character Large OBject). Si es de otro tipo ser mapeado a una columna de tipo BLOB (Binary Large OBject).

OTRAS ANOTACIONES II

@Temporal(TemporalType.DATE) y @Temporal(TemporalType.TIME) del paquete (javax.persistence.Temporal) y (javax.persistence.TemporalType). Con est anotacin se indica que se debe persistir solos tipos de datos java.util.Date y java.util.Calendar.

@Max del paquete (org.hibernate.validator.Max). Con est anotacin el valor del atributo numrico debe ser <= que el mximo indicado. @Min del paquete (org.hibernate.validator.Min). Con est anotacin el valor del atributivo numrico debe ser >= que el mximo indicado. @Size del paquete (org.hibernate.validator.Size). Con est anotacin el tamao de un atributo array collection debe estar dentro del rango. @OrderBy(nombre asc"). Con est anotacin se indica el orden en que deben ser obtenidos los detalles para un atributo lista. Por defecto el orden ser ascendente (ASC) (de menor a mayor si el campo es numrico y por orden alfabtico si el campo es de tipo texto).

RESUMEN

Anotaciones Nivel Entidades:

@Entity: indica que la clase (POJO) es una entidad persistente. @Table: indica la tabla principal relacionada con la entidad:

name: nombre de la tabla, por defecto en de la entidad si no se especifica. catalog: nombre del catalogo. schema: nombre del esquema. uniqueConstraints: constraints entre tablas relacionadas con la anotacin @column y @joincolumn.

Anotaciones Nivel de Atributo:

@Id: indica el atributo que es llave primaria de la entidad.

RESUMEN

@GeneratedValue: asociado con la llave primaria, indica que ste se debe generar por ejemplo con una secuencia de la base de datos: strategy: estrategia a seguir para la generacin de la clave:

GenerationType.AUTO: valor por defecto, el contenedor decide la estrategia en funcion de la base de datos. GenerationType. IDENTITY: utiliza un contador (MySQL). GenerationType.SEQUENCE: utiliza una secuencia (ORACLE, PostgreSQL) . GenerationType.TABLE: utiliza una tabla de identificadores:

forma en la que se genera la clave. @TableGenerator: define una tabla con claves primarias generadas. Se debe especificar en la anotacin @GeneratedValue con strategy = GenerationType.TABLE.

generator:

RESUMEN

name: nombre de la secuencia.


table: nombre de la tabla que guarda los valores generados. catalog: catalogo de la tabla. schema: esquema de la tabla. pkColumnName: nombre de la clave primaria de la tabla. valueColumnName: nombre de la columna que guarda el ltimo valor generado.

pkColumnValue: valor de la clave primaria.


initialValue: valor inicial de la secuencia. allocationSize: cantidad a incrementar de la secuencia. uniqueConstraints: constrains entre tablas relacionadas.

@SequenceGenerator: define un generador de claves primarias utilizando junto con la anotacin @GeneratedValue. Se debe especificar la secuencia en la entidad junto a la clave primaria.

RESUMEN

name: nombre del generador de la clave.


sequenceName: nombre de la secuencia de la base de datos del que se va a obtener la clave. initialValue: valor inicial de la secuencia. allocationSize: cantidad a incrementar de la secuencia cuando llegue al mximo.

Das könnte Ihnen auch gefallen