java / intermediate
Snippet
DTO-Projektion mit Klassen-Konstruktoren in JPQL
Anstatt die gesamte JPA-Entität abzurufen, können Sie das Schlüsselwort 'new' in JPQL verwenden, um spezifische Felder direkt in ein Data Transfer Object (DTO) zu projizieren. Dies reduziert den Speicherverbrauch und verbessert die Abfrageleistung, indem nur benötigte Daten abgerufen werden.
snippet.java
1
2
3
4
public interface UserRepository extends JpaRepository<User, Long> {@Query("SELECT new com.example.UserDTO(u.username, u.email) FROM User u WHERE u.id = :id")UserDTO findUserDTOById(Long id);}
spring
Erklärung
1
SELECT new com.example.UserDTO(...)
Weist JPA an, die angegebene DTO-Klasse unter Verwendung ihres Konstruktors zu instanziieren.
2
u.username, u.email
Die spezifischen Felder der Entität, die mit den Argumenten des DTO-Konstruktors übereinstimmen.