Sobes.tech
Junior

Czy klasa Entity może być abstrakcyjna?

sobes.tech AI

Odpowiedź od AI

Tak, może. Klasa abstrakcyjna Entity może służyć jako klasa bazowa dla innych encji, zapewniając wspólne właściwości lub metody, które muszą być dziedziczone. Pozwala to uniknąć duplikacji kodu i zaimplementować polimorfizm. Specyfikacja JPA dopuszcza użycie klas abstrakcyjnych jako rodziców encji za pomocą strategii dziedziczenia (@Inheritance).

Przykład:

// Abstrakcyjna klasa bazowa Entity
@Entity
@Inheritance(strategy = InheritanceType.JOINED) // Przykład strategii dziedziczenia
public abstract class BaseEntity {

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

    // Wspólne właściwości lub metody
    public Long getId() {
        return id;
    }

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

Klasa potomna Entity:

// Klasa potomna dziedzicząca po abstrakcyjnej BaseEntity
@Entity
public class ConcreteEntity extends BaseEntity {

    private String name;

    // Właściwości specyficzne dla ConcreteEntity
    public String getName() {
        return name;
    }

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