Sobes.tech
Junior — Middle

Πώς υλοποιεί το αποθετήριο JPA τις μεθόδους που δημιουργούνται αυτόματα κατά την εκκίνηση της εφαρμογής;

sobes.tech AI

Απάντηση από AI

Το αποθετήριο JPA στο Spring Data υλοποιεί μεθόδους που δημιουργούνται αυτόματα, χρησιμοποιώντας τον μηχανισμό δυναμικής δημιουργίας proxy αντικειμένων κατά την εκκίνηση της εφαρμογής.

Όταν δηλώνετε μια διεπαφή αποθετηρίου, π.χ., που κληρονομεί από το JpaRepository, το Spring Data αναλύει τα ονόματα των μεθόδων και τις υπογραφές τους για να καταλάβει ποιες ερωτήσεις πρέπει να δημιουργηθούν. Στη συνέχεια, με τη βοήθεια Reflection και Proxy, δημιουργείται μια υλοποίηση αυτής της διεπαφής, η οποία κατά την κλήση των μεθόδων, διαμορφώνει και εκτελεί τις αντίστοιχες ερωτήσεις JPQL ή SQL.

Παράδειγμα:

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByLastName(String lastName);
}

Κατά την εκκίνηση του Spring, δημιουργείται ένα proxy που, όταν καλείται το findByLastName, θα δημιουργήσει μια ερώτηση τύπου SELECT u FROM User u WHERE u.lastName = ?1 και θα την εκτελέσει αυτόματα.