Ahora puedes definir las entidades
Author, Category e
Invoice de una manera más sucinta. Para ver un ejemplo aquí tienes el nuevo código para
Category:
package com.yourcompany.invoicing.model;
import jakarta.persistence.*;
import lombok.*;
@Entity @Getter @Setter
public class Category extends Identifiable {
@Column(length=50)
String description;
}
La refactorización es extremadamente simple.
Category ahora desciende de
Identifiable 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
Author e
Invoice. Además, a partir de ahora extenderás la mayoría de tus entidades de la superclase mapeada
Identifiable.
Hemos creado nuestra propia clase
Identifiable 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
Identifiable 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.