Projeções e DTOs
Selecione somente os dados de que precisa.
Projeções e DTOs é uma aula grátis de Spring Boot 4 Microservices & REST APIs no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Spring Boot 4 Microservices & REST APIs, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Spring Boot 4 Microservices & REST APIs inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Why Projections
Fetching whole entities when you need only a few columns wastes memory and bandwidth.
Projections let you select a subset of fields, returning lightweight objects instead of full entities.
Interface Projections
Declare an interface with getters for the fields you want. Spring Data implements it as a proxy.
public interface UserSummary {
String getName();
String getEmail();
}Returning a Projection
Use the interface as the query method return type.
public interface UserRepository
extends JpaRepository<User, Long> {
List<UserSummary> findByActiveTrue();
}Closed vs Open Projections
A closed projection only exposes existing properties (efficient — selects only those columns). An open projection computes values with @Value and SpEL (loads the whole entity).
Open Projection Example
Combine fields with a SpEL expression.
public interface UserView {
@Value("#{target.firstName + ' ' + target.lastName}")
String getFullName();
}Class-Based Projections (DTOs)
A DTO class with a matching constructor is another projection style. Spring Data maps query columns to constructor parameters by name.
public class UserDto {
private final String name;
private final String email;
public UserDto(String name, String email) {
this.name = name;
this.email = email;
}
// getters
}Returning a DTO
Use the DTO class as the return type, just like interface projections.
public interface UserRepository
extends JpaRepository<User, Long> {
List<UserDto> findByActiveTrue();
}DTOs in JPQL Constructor Expressions
With custom JPQL, use a constructor expression to build DTOs directly.
@Query("SELECT new com.app.UserDto(u.name, u.email) "
+ "FROM User u WHERE u.active = true")
List<UserDto> findActiveSummaries();Dynamic Projections
Make the return type generic so one method serves multiple projections.
<T> List<T> findByActiveTrue(Class<T> type);
// usage
repo.findByActiveTrue(UserSummary.class);
repo.findByActiveTrue(UserDto.class);Projections with Native Queries
Interface projections also work with native SQL queries when column names match the getters.
@Query(value = "SELECT name, email FROM users",
nativeQuery = true)
List<UserSummary> findAllSummaries();Choosing an Approach
Prefer closed interface projections for read-only lists (most efficient). Use DTO classes when you need behavior or want them outside the persistence layer.
Quick Check
Test your understanding of projections.
Recap
You learned to return lightweight results:
- Interface projections — closed (efficient) or open (SpEL)
- Class-based DTO projections via constructor mapping
- JPQL constructor expressions for custom queries
- Dynamic projections with a generic type parameter
Perguntas Frequentes
A aula “Projeções e DTOs” é grátis?
Sim — o texto completo de “Projeções e DTOs” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Spring Boot 4 Microservices & REST APIs, atualize para CoddyKit PRO. O curso de Spring Boot 4 Microservices & REST APIs inclui 4 aulas no total.
O que vou aprender em “Projeções e DTOs”?
Selecione somente os dados de que precisa. Você pratica Spring Boot 4 Microservices & REST APIs com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Spring Boot 4 Microservices & REST APIs?
Nenhuma experiência prévia é necessária. Spring Boot 4 Microservices & REST APIs no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Projeções e DTOs”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Spring Boot 4 Microservices & REST APIs?
Sim. Cada aula de Spring Boot 4 Microservices & REST APIs inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Consultas dinâmicas com especificações
- Projeções e DTOs
- Auditoria com @CreatedDate
- Paginação e ordenação