Saltar la navegación

Entidades (Mapeo)

Concepto

Concepto

  • Una entidad es un objeto de persistencia.
  • (Mapeo representacional) Normalmente...
    • La clase entidad representa una tabla en el modelo relacional 
    • Una instancia de la clase entidad representa una fila de la tabla.
    • Los atributos de la clase entidad representan los campos de la tabla
  • (Requisitos de las clases entidades) Una clase de entidad debe...
    • tener la anotación: @Entity (javax.persistence.Entity)
    • ser public
    • ser Serializable
    • tener una clave primaria (@Id) y debe ser public (acceso directo o mediante getters y setters)
    • tener un constructor público sin parámetros (puede tener más constructores)
    • implementar los métodos
      • toString()
      • hashCode()
      • equals(Object other)

Anotaciones

  • @Entity, @Id
  • @Table (name=“”). Nombre de la tabla
  • @ GeneratedValue (strategy=?). Generación de claves
    • GenerationType.AUTO. Por defecto, se elige una estrategia de forma automática
    • GenerationType.IDENTITY. Se utiliza un contador autoincremental gestionado por la BD
  • @Column. Propiedades de la anotación
    • name. Nombre de la columna
    • columnDefinition. Definición de la columna
    • unique. Valor único
    • nullable. Permitir nulos
  • @Transient. No persistente

Relaciones

En JPA, existen cuatro tipo de relaciones entre las entidades.Las cuatro relaciones cubren las posibles relaciones que pueden existir entre las tablas de una base de datos relacional. Estas cuatro relaciones son expresadas a través de anotaciones.

  • @OneToOne
  • @OneToMany
  • @ManyToOne
  • @ManyToMany

Además, cada anotación acepta atributos que definen a profundidad el comportamiento de la relación. Los posibles atributos son:

  • cascade. Tipo de operaciones en cascada a aplicar:
    • CascadeType.ALL. Todas las operaciones
    • CascadeType.PERSIST. Operaciones de persistencia
    • CascadeType.MERGE. Operaciones de actualización
    • CascadeType.REMOVE. Operaciones de borrado
    • CascadeType.REFRESH. Operaciones de actualización
  • fetch. Tipo de lectura en la BD
    • FechType.LAZY. Los datos se recuperan de forma perezosa
    • FechType.EAGER. Los datos se recuperan de forma temprana
  • mappedBy. El campo que posee la relación.
    • mappedBy=“variable”
  • optional. Si la asociación es opcional
  • @JoinColumn. Se establece como una clave foránea en otra entidad.
    • name. Nombre de la columna

 

Relaciones (en detalle)

OneToOne

Cada entidad se relaciona con una sola instancia de otra entidad.

  • Por ejemplo, los datos básicos de un Usuario y datos detallados del usuario.

OneToMany y ManyToOne

Una entidad, puede estar relacionada con varias instancias de otras entidades.

  • Por ejemplo, una Cesta de la Compra tiene varios Productos comprados.

OneToMany_ManyToOne

ManyToMany

Varias instancias de una entidad pueden relacionarse con múltiples instancias de otras entidades.

  • Por ejemplo, cada asignatura tiene muchos estudiantes, y cada estudiante puede tener varias asignaturas

Many To Many

Creado con eXeLearning (Ventana nueva)