4.3 Estrategia de Asignación - TABLE_PER_CLASS

<< Anterior - Volver Menu JPA - Siguiente >>

Este tipo de estrategia quiere decir que al momento de mapearse en la base de datos se genera una tabla por cada clase y cada tabla que corresponde a una entidad hija se generara los campos comunes, esto quiere decir que se agregan a la tabla los campos del padre.

Nota: No se puede olvidar que en la jerarquía de las clases solo una de las clases debe tener el estereotipo @Id, esto quiere decir que la llave primaria debe estar una sola vez en la jerarquía.

Para realizar este tipo de estrategia es lo mismo que en la anterior estrategia pero en la parte de propiedades del objeto Generalization se cambia el valor del atributo Strategy al valor TABLE_PER_CLASS seleccionándolo del combobox. Esto lo podemos ver en la siguiente imagen:

propiedadesTaylor3.JPG

A continuación podremos ver la jerarquía de relación de un ejemplo en la perspectiva de Taylor en eclipse:

perspectivaTaylor9.JPG

En el siguiente segmento podremos observar como queda en lenguaje java la jerarquías de las entidades del anterior ejemplo aplicando el tipo de estrategia TABLE_PER_CLASS:

Clase Entidad Persona.class:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) // Anotacion que realiza la estrategia de asignación
public class Persona implements Serializable, Cloneable{
    /** @generated */
    private static final long serialVersionUID = 1L;

    /** @generated */
    public Persona() {
    }

    private String identificacion = null;

    private String nombre = null;

    private String primerApellido = null;

    private String segundoApellido = null;

    private String direccion = null;

    private String telefono = null;

    private String celular = null;

    *
    *
    *    Métodos getters y setters con sus respectivo atributos,
    *    anotaciones y resto de código necesario.
    *
    *

}

Clase Entidad Estudiante.class:

@Entity
// Entidad que extiende o hereda la de la clase Persona
public class Estudiante extends Persona implements Serializable, Cloneable{
    /** @generated */
    private static final long serialVersionUID = 1L;

    /** @generated */
    public Estudiante() {
    }

    private Long semestre = null;

    private String carrera = null;

    private String universidad = null;

    *
    *
    *    Métodos getters y setters con sus respectivo atributos,
    *    anotaciones y resto de código necesario.
    *
    *

}

Clase Entidad RepresentanteSalon.class:

@Entity
//Entidad que extiende o hereda la de la clase Estudiante
public class RepresentanteSalon extends Estudiante implements Serializable, Cloneable{
    /** @generated */
    private static final long serialVersionUID = 1L;

    /** @generated */
    public RepresentanteSalon() {
    }

    private String reunion = null;

    private String tema = null;

    private Date fecha = null;

    private Boolean asistencia = null;

    *
    *
    *    Métodos getters y setters con sus respectivo de los 
    *    atributos y resto de código necesario.
    *
    *

}

En las siguientes imágenes podremos ver como se mapea las entidades en la Base de Datos:

mapeoBD23.JPG
mapeoBD21.JPG
mapeoBD24.JPG

Con las imágenes anteriores podemos concluir que al momento de mapearse cada entidad o clase se genera una tabla y también podemos decir que por cada tabla que corresponde a una entidad Hija se agregan los atributos de la entidad padre, como se había dicho al principio de esta pagina. Con este tipo de estrategia hay que tener un gran cuidado ya que se generan muchos problemas de rendimiento de trabajo con polimorfismo, a demás que es escaso encontrar proveedores JPA que implementen este tipo de estrategia.

<< Anterior - Volver Menu JPA - Siguiente >>

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License