1. Generación Automaticas de Claves Primarias

Volver Menu JPA - Siguiente >>

En las Bases de Datos podemos encontrar dos mecanismos para generar los identificadores numéricos automáticamente, de los cuales podemos distinguir dos y que podemos utilizar al momento de hacer persistencia:

  • Contadores de Secuencia. es muy común en Oracle y PostgreSQL.
  • Columnas Contadoras. es muy común en MySQL, SQL Server, Sybase.

En Java podemos encontrar anotaciones especiales en el atributo de la llave primaria para cuando los valores se generen mediante una secuencia si la base de datos proporciona una secuencia; cuando los valores se generan cuando se mapee a una columna contadora si la base de datos ofrece una columna contador. Las anotaciones que podemos encontrar son:

  • @GeneratedValue
  • @SequenceGenerator

En Taylor podemos encontrar dichas anotaciones o estereotipos y asignarlas a las propiedades de llave primaria, esto lo podemos hace de la siguiente manera:

  • Primero debemos tener en cuenta que las propiedades de llave primaria que quieren ser generadas automáticamente debe de ser de tipo de variable short, int, long o sus contrapartidas objetuales.
  • Luego seleccionamos el atributo que corresponde a la llave primaria de la entidad en la parte izquierda de la ventana de eclipse, donde se encuentra el navegador de objetos o ficheros de eclipse.
  • Ir a la parte inferior de la ventana de eclipse donde se encuentra las propiedades de ese atributo seleccionado y seleccionar la pestaña Stereotypes, luego en el contenedor de nombre Available Stereotypes seleccionar cualquiera de los dos estereotipos mencionados, y por ultimo damos en el boton "Add»". a continuación veremos con mas especificación los dos estereotipos:

@GeneratedValue: este estereotipo tiene dos atributos, uno de ellos se llama Generator donde especificamos el nombre del generador en el caso de escoger la estrategia "SEQUENCE"; el atributo GenerationType donde este atributo obtiene unos valores ya predefinidos los cuales son "AUTO" que quiere decir que Hibernate decide la estrategia en función de la Base de Datos usada; "IDENTITY" que quiere decir que mapea la clave a una columna contadora; "SEQUENCE" que quiere decir que utiliza una secuencia para generar la clave. Esto lo podemos ver en las siguiente imagen:

propiedadesTaylor8.JPG

A continuación como queda estas anotación en la clases entidades:

@Entity
public class Factura extends LogAudit implements Serializable, Cloneable{
    /** @generated */
    private static final long serialVersionUID = 1L;

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

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Long getId() {
        return id;
    }

    /** @generated */
    public void setId(final Long id) {
        this.id = id;
    }

    /** @generated */
    private Long id = null;

    *
    *
    *    Mas Código.
    *
    *

}

@SequenceGenerator:. este estereotipo tiene dos atributos que se deben especificar uno se llama Name donde se debe ingresar el nombre del generador y el atributo SequenceName ingresamos el nombre que tiene la secuencia. Esto lo podemos ver en la siguiente imagen:

propiedadesTaylor10.JPG

A continuación como queda estas anotación en la clases entidades:

@Entity
public class Factura extends LogAudit implements Serializable, Cloneable{
    /** @generated */
    private static final long serialVersionUID = 1L;

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

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "AccountIdGenerator")
    @SequenceGenerator(name = "AccountIdGenerator", initialValue = 0, allocationSize = 0, sequenceName = "AccountSeq")
    public Long getId() {
        return id;
    }

    /** @generated */
    public void setId(final Long id) {
        this.id = id;
    }

    /** @generated */
    private Long id = null;

    *
    *
    *    Mas Código.
    *
    *

}

Volver Menu JPA - Siguiente >>

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