Sobes.tech
Junior
198

Может ли класс Entity быть абстрактным?

AI-дан жауап

sobes.tech AI

Да, может. Абстрактный класс Entity может служить базовым классом для других сущностей, предоставляя общие свойства или методы, которые должны быть унаследованы. Это позволяет избежать дублирования кода и реализовать полиморфизм. JPA спецификация допускает использование абстрактных классов в качестве родительских для сущностей при помощи стратегий наследования (@Inheritance).

Пример:

// Абстрактный базовый класс Entity
@Entity
@Inheritance(strategy = InheritanceType.JOINED) // Пример стратегии наследования
public abstract class BaseEntity {

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

    // Общие свойства или методы
    public Long getId() {
        return id;
    }

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

Дочерний класс Entity:

// Дочерний класс, наследующийся от абстрактного BaseEntity
@Entity
public class ConcreteEntity extends BaseEntity {

    private String name;

    // Свойства, специфичные для ConcreteEntity
    public String getName() {
        return name;
    }

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