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
✅ كود قوي (تحقق كامل)
✅ إدارة أخطاء احترافية
✅ فصل واضح للمسؤوليات
✅ سهل الاختبار
✅ جاهز للإنتاج