0Pricing
Spring Boot 4 Microservices & REST APIs · درس

الإسقاطات وDTOs

حدّد البيانات التي تحتاج إليها فقط

الإسقاطات وDTOs درس مجاني في Spring Boot 4 Microservices & REST APIs على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Spring Boot 4 Microservices & REST APIs، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Spring Boot 4 Microservices & REST APIs 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

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

الأسئلة الشائعة

هل درس «الإسقاطات وDTOs» مجاني؟

نعم — نص درس «الإسقاطات وDTOs» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Spring Boot 4 Microservices & REST APIs، انتقل إلى CoddyKit PRO. تتضمن دورة Spring Boot 4 Microservices & REST APIs 4 دروس في المجموع.

ماذا ستتعلم في «الإسقاطات وDTOs»؟

حدّد البيانات التي تحتاج إليها فقط تتمرن على Spring Boot 4 Microservices & REST APIs مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Spring Boot 4 Microservices & REST APIs؟

لا تُشترط خبرة سابقة. Spring Boot 4 Microservices & REST APIs على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الإسقاطات وDTOs»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Spring Boot 4 Microservices & REST APIs هذا؟

نعم. كل درس في Spring Boot 4 Microservices & REST APIs يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الاستعلامات الديناميكية باستخدام Specifications
  2. الإسقاطات وDTOs
  3. التدقيق باستخدام @CreatedDate
  4. التقسيم إلى صفحات والفرز
← العودة إلى Spring Boot 4 Microservices & REST APIs