¿Qué es una entidad en Java EE y cómo declararla?

Una entidad en Java es un objeto de persistencia.

La persistencia es la habilidad de una aplicación para mantener(persistir) y recuperar información de sistemas de almacenamiento no volátiles.

Una entidad representa una tabla en una base de datos, y cada instancia de entidad corresponde a una fila en la tabla.

El estado de una entidad se representa por campos de persistencia o propiedades de persistencia.

Campos de persistencia son las variables dentro de la clase entidad. Las variables deben ser de alguno de estos tipos:

  • Java primitive types
  • java.lang.String
  • Other serializable types, including:
    • Wrappers of Java primitive types
    • java.math.BigInteger
    • java.math.BigDecimal
    • java.util.Date
    • java.util.Calendar
    • java.sql.Date
    • java.sql.Time
    • java.sql.TimeStamp
    • User-defined serializable types
    • byte[]
    • Byte[]
    • char[]
    • Character[]
  • Enumerated types
  • Other entities and/or collections of entities
  • Embeddable classes

Propiedades de persistencia son los métodos de acceso a la información, get o set.

Ejemplo de entidad en Java EE

Vamos a partir de una tabla sencilla, será la tabla PERSONAS, diseñada en PostgreSQL.

CREATE TABLE PERSONAS (
   id serial  NOT NULL,
   nombre varchar(50)  NOT NULL,
   telefono real  NULL,
   CONSTRAINT PERSONAS_pk PRIMARY KEY (id)
);

Por lo general las tablas en la base de datos se escriben en plural y luego cuando se crea una entidad en lenguaje estas se declaran en singular.

Empezamos declarando

package com.vlk7.app.entity;

public class Persona {

	private Long id;
	private String nombre;
	private float telefono;	
}

Luego generamos los Getter y Setter

package com.vlk7.app.entity;

public class Persona {

	private Long id;
	private String nombre;
	private float telefono;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public float getTelefono() {
		return telefono;
	}

	public void setTelefono(float telefono) {
		this.telefono = telefono;
	}
}

Ahora necesitamos usar las etiquetas de Java EE para identificar la clase como entidad y definir la llave primaria.

@Entity Especifica que una clase es una entidad

@Id Especifica la llave primaria de una entidad.

@GeneratedValue proporciona la especificación de estrategias de generación para los valores de las claves primarias.

GenerationType.Identity

El GenerationType.IDENTITY es el más fácil de usar, pero no el mejor desde el punto de vista del rendimiento. Se basa en una columna de base de datos auto-incrementada y permite que la base de datos genere un nuevo valor con cada operación de inserción. Desde el punto de vista de la base de datos, esto es muy eficiente porque las columnas de incremento automático están altamente optimizadas y no requieren declaraciones adicionales. Fuente: thoughts-on-java.org
package com.ganaderouno.app.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Persona {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	
	private String nombre;
	private float telefono;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public float getTelefono() {
		return telefono;
	}

	public void setTelefono(float telefono) {
		this.telefono = telefono;
	}
}


https://docs.oracle.com/javaee/7/tutorial/persistence-intro001.htm

https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/cwlp_jpa.html

https://docs.oracle.com/cd/E19798-01/821-1841/bnbqc/index.html

https://www.service-architecture.com/articles/database/mapping_sql_and_java_data_types.html

https://docs.oracle.com/javaee/6/api/javax/persistence/Entity.html

https://docs.oracle.com/javaee/7/api/javax/persistence/Id.html

Deja un comentario