Ahora puedes definir las entidades
Autor, Categoria y
Factura de una manera más sucinta. Para ver un ejemplo aquí tienes el nuevo código para
Categoria:
package com.tuempresa.facturacion.modelo;
import javax.persistence.*;
import lombok.*;
@Entity @Getter @Setter
public class Categoria extends Identificable { // Extiende de Identificable
// por tanto no necesita tener una propiedad id
@Column(length=50)
String descripcion;
}
La refactorización es extremadamente simple.
Categoria ahora desciende de
Identificable y hemos quitado la propiedad
oid. De esta forma, no sólo tu código es más corto, sino también más elegante, porque estás declarando tu clase como identificable (el qué, no el cómo), y has quitado de tu clase de negocio un código que era un tanto técnico.
Aplica esta misma refactorización a las entidades
Autor y
Factura. Además, a partir de ahora extenderás la mayoría de tus entidades de la superclase mapeada
Identificable.
Hemos creado nuestra propia clase
Identificable para ver las ventajas de usar superclases mapeadas, sin embargo OpenXava te provee una clase
Identifiable lista para usar que puedes encontrar en el paquete
org.openxava.model. Por tanto, en tu próximo proyecto no has de escribir la clase
Identificable otra vez, simplemente usa la incluida en OpenXava.
Resumen
Has aprendido, pues, que una superclase mapeada es una clase normal y corriente con anotaciones de mapeo JPA que puedes usar como clase base para tus entidades. También has aprendido como usar una superclase mapeada para simplificar tu código.