🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
Using DTO (Data Transfer Object) projections in Spring Data JPA is a powerful way to select specific columns from a database, reducing the overhead of selecting unnecessary data. Here's a step-by-step guide on how to set up DTO projections using an Employee entity as an example.
1. Setting up the project
Ensure you have the necessary dependencies in your pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2. Define the Entity
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
private String department;
private Double salary;
// getters, setters, etc.
}
3. Create a DTO Projection
public class EmployeeInfoDto {
private final String firstName;
private final String lastName;
private final String department;
public EmployeeInfoDto(String firstName, String lastName, String department) {
this.firstName = firstName;
this.lastName = lastName;
this.department = department;
}
// getters
}
Make sure the fields are final and initialized via a constructor. 4. Create the Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
@Query("SELECT new com.yourpackage.EmployeeInfoDto(e.firstName, e.lastName, e.department) FROM Employee e")
List<EmployeeInfoDto> findAllEmployeeInfo();
}
The @Query selects the desired fields and maps them to the EmployeeInfoDto. 5. Use the Repository in a Service
@Service
public class EmployeeService {
@Autowired
private EmployeeRepository employeeRepository;
public List<EmployeeInfoDto> getAllEmployeeInfo() {
return employeeRepository.findAllEmployeeInfo();
}
}
6. Test the Service
@RunWith(SpringRunner.class)
@SpringBootTest
public class EmployeeServiceTest {
@Autowired
private EmployeeService employeeService;
@Test
public void testFetchEmployeeInfo() {
List<EmployeeInfoDto> employeeInfo = employeeService.getAllEmployeeInfo();
for (EmployeeInfoDto info : employeeInfo) {
assertNotNull(info.getFirstName());
assertNotNull(info.getLastName());
assertNotNull(info.getDepartment());
}
}
}
7. Why Use DTO Projections?
My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment