Sobes.tech
Junior

Μπορεί η κλάση Entity να είναι αφηρημένη;

sobes.tech AI

Απάντηση από 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;
    }
}