Saltar la navegación

7.- Clases persistentes.

Caso práctico

Para poder interactuar con un bases de datos, María debe definir en su aplicación clases y objetos que puedan representar las entidades de la base de datos con la que interacciona la aplicación.

Imagen de María, una de las protagonistas de nuestros casos prácticos en la oficina.

Imagen que muestra una pantalla de ordenador y una con un bolígrafo, tomando notas sobre un cuaderno.

Se denomina "persistencia" de los objetos a su capacidad para guardarse y recuperarse desde un medio de almacenamiento. Las clases persistente son clases en una aplicación que nos van a servir para representar entidades de la base de datos. No se considera que todas las instancia de una clase persistente puedan estar en estado persistente, ya que una instancia puede ser transitorio o separada.

El estándar Java Data Objects (JDO), define una clase con capacidad de persistencia, como aquella que implementa la interaface javax.jdo.PersistenceCapable.

Las clases persistentes tienen la capacidad de definir objetos que pueden almacenarse y recuperarse y un almacén persistente de datos. La especificación JDO incorpora la figura del procesador de clases en código ejecutable Java, JDO Enhacer, que es un programa que modifica los archivos compilados de las clases, añadiendo el código ejecutable necesario para realizar la grabación y recuperación transparente de los atributos de las instancias persistentes.

JDO permite a los programadores y programadoras convertir sus clases en persistentes, de forma que los objetos pertenecientes a clases concretas definidas por el programador pueden mantener su estado, con la única limitación de que el estado esté compuesto por los atributos persistentes que sean independientes del contexto de ejecución: tipos primitivos, tipos de referencia e interfaz y algunas clases del sistema que permiten modelar el estado como por ejemplo la clase Array, Date, etc.

Para poder indicar las clases y atributos que son persistentes, se utiliza un fichero de configuración XML, que se denomina descriptor de persistencia.. Para que las instancias de las clases persistentes pueden mantenerse en los sistemas gestores de bases de datos, es necesario establecer la correspondencia entre los objetos y su estado persistente.

Las clases Java deberán tener las siguientes características:

  • Deben tener un constructor público sin ningún tipo de argumentos.
  • Para cada propiedad que queramos persistir debe haber un método get/set asociado.
  • Implementar el interfaz serializable.

Equivalen a la tabla de la base de datos y un registro o fila es un objeto persistente de esa clase. Un ejemplo podría ser el que se muestra a continuación:

package Persistente;
import java.util.HashSet;
import java.util.Set;
public class Departamentos implements java.io.Serializable {
private byte deptNo;

private String dnombre;
private String loc;
private Set empleadoses = new HashSet(0);
public Departamentos() {
}
public Departamentos(byte deptNo) {
    this.deptNo = deptNo;
}
public Departamentos(byte deptNo, String dnombre, String loc, Set
    empleadoses) {
    this.deptNo = deptNo;
    this.dnombre = dnombre;
    this.loc = loc;
    this.empleadoses = empleadoses;
}
    public byte getDeptNo() {
    return this.deptNo;
}
    public void setDeptNo(byte deptNo) {
    this.deptNo = deptNo;
}
    public String getDnombre() {
    return this.dnombre;
}
    public void setDnombre(String dnombre) {
    this.dnombre = dnombre;
}
    public String getLoc() {
    return this.loc;
}
    public void setLoc(String loc) {
    this.loc = loc;
}
    public Set getEmpleadoses() {
    return this.empleadoses;
}
    public void setEmpleadoses(Set empleadoses) {
    this.empleadoses = empleadoses;
}
    public void setdeptNo(byte b) {
    throw new UnsupportedOperationException("Not yet implemented");
}

Para saber más

El siguiente enlace nos muestra documentación sobre Java Data Objects. (En inglés)

Java Data Objects.