Jpa

1,796 views
1,636 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,796
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
89
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Jpa

  1. 1. Ing. Elkin SuárezEsp. Gerencia de ProyectosCandidato MBAedsuarez@uis.edu.coJAVA PERSISTENCEAPI INGENIERIA WEB
  2. 2. ¿ 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.
  3. 3. 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á anotación 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á anotación se le indica el nombre de la tabla y a cual base de datos pertenece.  La entidad debe tener un método get/set para cada atributo.
  4. 4. ENTIDAD II La entidad debe implementar la interfaz Serializable del paquete (java.io) útil para la persistencia de objetos. La interfaz no tiene métodos solo sirve para identificar de que es serializable. Cualquier subclase de una clase serializable también 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 métodos hashCode() y equals(Object obj) de la clase Object, solo para el atributo llave de la entidad.
  5. 5. ANOTACIONES BÁSICAS @Id del paquete (javax.persistence.Id). Con está anotación 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á anotación 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á anotación se le indica el nombre de la columna de la tabla.
  6. 6. VALIDACIONES @NotNull del paquete (org.hibernate.validator.NotNull). Con está anotación el valor del atributo no debe ser null. @Length del paquete (org.hibernate.validator.Length). Con esta anotación la longitud de un atributo debe estar en el rango. @Range del paquete (org.hibernate.validator.Range). Con está anotación el valor del atributo numérico debe estar en el rango. @Email del paquete (org.hibernate.validator.Email). Con está anotación la cadena del atributo representa un patrón email.
  7. 7. 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).
  8. 8. RELACIONES ENTRE ENTIDADES II @OneToMany(mappedBy = "atributo_maestro", fetch = FetchType.LAZY) del paquete (javax.persistence.OneToMany).
  9. 9. 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")})
  10. 10. RELACIONES ENTRE ENTIDADES IV
  11. 11. RELACIONES ENTRE ENTIDADES V• @OneToOne(fetch=FetchType.LAZY) del paquete (javax.persistence.ManyToMany).
  12. 12. RELACIONES ENTRE ENTIDADES VI• @OneToOne(fetch=FetchType.LAZY) del paquete (javax.persistence.ManyToMany).
  13. 13. ENTIDADES CON LLAVES COMPUESTAS I
  14. 14. ENTIDADES CON LLAVES COMPUESTAS II
  15. 15. ENTIDADES CON LLAVES COMPUESTAS III
  16. 16. OTRAS ANOTACIONES I @Transient del paquete (javax.persistence.Transient). Con está anotación el atributo no es persistente. (No hace referencia a ninguna columna de la tabla). @Lob del paquete (javax.persistence.Lob). Con está anotación se le indica al atributo que el contenido de un campo básico será guardado como LOB (Large OBject). Si por ejemplo utilizamos esta anotación 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).
  17. 17. OTRAS ANOTACIONES II @Temporal(TemporalType.DATE) y @Temporal(TemporalType.TIME) del paquete (javax.persistence.Temporal) y (javax.persistence.TemporalType). Con está anotación 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á anotación el valor del atributo numérico debe ser <= que el máximo indicado. @Min del paquete (org.hibernate.validator.Min). Con está anotación el valor del atributivo numérico debe ser >= que el máximo indicado. @Size del paquete (org.hibernate.validator.Size). Con está anotación el tamaño de un atributo array ó collection debe estar dentro del rango. @OrderBy(“nombre asc"). Con está anotación 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 numérico y por orden alfabético si el campo es de tipo texto).

×