انتقل إلى المحتوى الرئيسي

MODULE 3 - الهندسة المعمارية الطبقية وCRUD الكامل

أهداف الوحدة​

ستمكنك هذه الوحدة من:

  • إتقان الهندسة المعمارية ذات 3 طبقات (Controller, Service, Repository)
  • فهم دور وأهمية طبقة الخدمة
  • تنفيذ التحقق من صحة البيانات باستخدام Bean Validation
  • إدارة أخطاء HTTP بشكل احترافي باستخدام ResponseEntity
  • إنشاء API REST كاملة وقوية

محتوى الوحدة​

النظرية​

الفصل 1: طبقة الخدمة بالتفصيل​

  • دور ومسؤوليات طبقة الخدمة
  • فصل الاهتمامات
  • المنطق التجاري مقابل الوصول إلى البيانات
  • حقن التبعيات
  • الهندسة المعمارية الكاملة Controller → Service → Repository

الفصل 2: التحقق من صحة البيانات​

  • مقدمة إلى Bean Validation (JSR 380)
  • التعليقات التوضيحية للتحقق:
    • @NotNull, @NotEmpty, @NotBlank
    • @Size, @Min, @Max
    • @Email, @Pattern
    • @Past, @Future
  • @Valid في المتحكمات
  • رسائل خطأ مخصصة
  • مجموعات التحقق
  • التحقق المخصص

الفصل 3: إدارة أخطاء HTTP​

  • فهم ResponseEntity
  • رموز حالة HTTP (200, 201, 204, 400, 404, 500)
  • إدارة الاستثناءات
  • @ExceptionHandler
  • @ControllerAdvice للإدارة العامة
  • إنشاء ردود خطأ مخصصة
  • أفضل الممارسات

الفصل 4: الهندسة المعمارية الطبقية الاحترافية​

  • نظرة عامة على الهندسة المعمارية
  • تدفق البيانات الكامل
  • اتفاقيات التسمية
  • تنظيم الحزم
  • DTOs مقابل الكيانات (مقدمة)
  • أفضل الممارسات الاحترافية

الأعمال التطبيقية​

TP3.1: هندسة CRUD كاملة​

الهدف: إنشاء API REST كاملة مع التحقق وإدارة الأخطاء

المحتوى:

  • الهندسة المعمارية ذات 3 طبقات (Controller, Service, Repository)
  • كيان Product مع التحقق
  • عمليات CRUD كاملة
  • التحقق من صحة بيانات الإدخال
  • إدارة احترافية للأخطاء (404, 400, 500)
  • ResponseEntity لجميع الردود
  • اختبارات باستخدام Postman

المدة المقدرة: 4-6 ساعات

المتطلبات المسبقة:

  • إكمال الوحدة 2 (TP2.1 وTP2.2)
  • قراءة جميع فصول الوحدة 3

المستوى: متوسط


TP3.2: CRUD مستقل (تحدي)​

الهدف: نفس بيان TP3.1 ولكن بدون أي كود مقدم — لتنفيذه بمفردك

المحتوى:

  • نفس تطبيق إدارة الطلاب
  • تعليمات واضحة: ماذا تفعل، أي نقاط نهاية، أي رموز HTTP
  • لا تفاصيل تقنية، لا كود مقدم
  • 5 تمارين إضافية (بحث، إحصائيات، ترقيم الصفحات، أخطاء، PostgreSQL)
  • أسئلة مراجعة ومعايير التقييم

المدة المقدرة: 2-3 ساعات

المتطلبات المسبقة: فهم مفاهيم الوحدة 3

المستوى: متوسط-متقدم (يتطلب الاستقلالية)


المتطلبات المسبقة​

المعرفة المطلوبة​

قبل البدء في هذه الوحدة، يجب أن تكون قد أتقنت:

✅ إنشاء مشاريع Spring Boot باستخدام Spring Initializr
✅ هيكل مشروع Spring Boot
✅ التكوين (application.properties / application.yml)
✅ التعليقات التوضيحية الأساسية (@RestController, @Service, @Repository)
✅ التعليقات التوضيحية لتخطيط HTTP (@GetMapping, @PostMapping, إلخ.)
✅ JPA والمستودعات (findById, findAll, save, deleteById)
✅ طرق مشتقة بسيطة (findBy, And, Or)
✅ H2 في وضع الذاكرة والمستمر

إذا لم تكن مرتاحًا مع هذه المفاهيم، عد إلى الوحدة 2.


المدة المقدرة​

النظرية: 8-10 ساعات (4 فصول)
التطبيق: 4-6 ساعات (1 TP كامل)
الإجمالي: 12-16 ساعة (2-3 جلسات من 4-6 ساعات)


الموارد الإضافية​

الوثائق الرسمية​

الدروس الموصى بها​


معايير النجاح​

في نهاية هذه الوحدة، يجب أن تكون قادرًا على:

  • ✅ إنشاء هندسة معمارية ذات 3 طبقات احترافية
  • ✅ تنفيذ التحقق من صحة البيانات باستخدام Bean Validation
  • ✅ إدارة أخطاء HTTP باستخدام ResponseEntity
  • ✅ استخدام رموز حالة HTTP الصحيحة
  • ✅ تنفيذ جميع عمليات CRUD
  • ✅ فصل المنطق التجاري بشكل صحيح عن الوصول إلى البيانات
  • ✅ إنشاء API REST قوية واحترافية

الخطوات التالية​

بمجرد إكمال هذه الوحدة، ستكون جاهزًا لـ:

  • الوحدة 4: قواعد البيانات في الإنتاج (PostgreSQL, Jakarta/Javax, Hibernate, Lombok)
  • الوحدة 5: Spring Core - IoC وDI المتقدم
  • الوحدة 6: Spring Data JPA المتقدم (الانضمامات، JPQL، التحسين)

لماذا هذه الوحدة مهمة​

قبل الوحدة 3​

❌ كود هش (لا يوجد تحقق)
❌ إدارة أخطاء أساسية
❌ منطق تجاري في المتحكم
❌ صعب الاختبار
❌ غير احترافي

بعد الوحدة 3​

✅ كود قوي (تحقق كامل)
✅ إدارة أخطاء احترافية
✅ فصل واضح للمسؤوليات
✅ سهل الاختبار
✅ جاهز للإنتاج

البدء مع الفصل 1