4.1 Estrategia de Asignación - SINGLE_TABLE

<< Anterior - Volver Menu JPA - Siguiente >>

Este tipo de estrategia, al momento de realizar el mapeo, se genera una sola tabla para toda la Jerarquia de Clases en la Base de Datos.

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 se deben seguir los siguientes paso:

  • Se debe tomar el tipo de Asociación Generalization de la paleta que se encuentra en la parte derecha de la pantalla.
  • Se hace clic sobre la entidad Hija y con clic sostenido arrastra el mouse hasta la entidad Padre, luego suelta clic.
  • Seleccionamos el objeto Generalization que se ha generado en el navegador de objetos o ficheros de eclipse que se encuentra en la parte izquierda de la pantalla.
  • Por ultimo no dirigimos a las propiedades del objeto en la parte inferior de la ventana de eclipse, seleccionamos la pestaña Stereotype Attributes y en el atributo Strategy de el estereotipo Inheritance seleccionamos la opción SINGLE_TABLE del combobox, como se puede ver en la siguiente imagen.
propiedadesTaylor1.JPG

En la siguiente imagen podemos ver un ejemplo de Herencia, ademas también podremos observar como se ve la Jerarquía en la perspectiva Taylor en eclipse:

perspectivaTaylor9.JPG

A continuación podremos ver en código java como quedan nuestras clases:

Clase entidad Persona.class:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) // 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 de los atributos con sus respectivo
    *    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 de los atributos con sus respectivo
    *    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 de los atributos con sus respectivo
    *    anotaciones y resto de código necesario.
    *
    *

}

Por ultimo, en la siguiente imagen, podremos ver como se mapea este ejemplo de jerarquías de clases en la Base de datos:

mapeoBD17.JPG

Lo que podemos concluir con respecto a la imagen anterior es que el tipo de la estrategia al momento de mapearse las entidades solo se genera una sola Tabla con todos los atributos de la entidades de la jerarquía en la Base de Datos, en este caso es la Tabla PERSONA que es la que corresponde a la Entidad Persona que es la Entidad padre de las Entidades Estudiante y RepresentanteSalon, a demas es la que contiene definido el 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