Sobes.tech
Junior

Ar gali būti Entity klasė abstrakti?

sobes.tech AI

Atsakymas iš AI

Taip, gali būti. Abstrakti Entity klasė gali būti pagrindinė klasė kitoms esybėms, teikianti bendras savybes ar metodus, kurie turi būti paveldėti. Tai leidžia išvengti kodo dubliavimo ir įgyvendinti polimorfizmą. JPA specifikacija leidžia naudoti abstrakčias klases kaip tėvų entitetus per paveldėjimo strategijas (@Inheritance).

Pavyzdys:

// Abstrakti pagrindinė Entity klasė
@Entity
@Inheritance(strategy = InheritanceType.JOINED) // Paveldėjimo strategijos pavyzdys
public abstract class BaseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // Bendros savybės ar metodai
    public Long getId() {
        return id;
    }

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

Vaiko klasė Entity:

// Vaiko klasė, paveldinti iš abstrakčios BaseEntity
@Entity
public class ConcreteEntity extends BaseEntity {

    private String name;

    // Specifinės savybės ConcreteEntity
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}