كل المشاريع
واجهة خلفية

خدمة حسابات بنكية مصغّرة — REST · GraphQL · Data REST

خدمة حسابات بنكية مصغّرة تعرض نفس المجال عبر ثلاث واجهات — واجهة REST مكتوبة يدوياً، وواجهة GraphQL، وSpring Data REST المُولَّد تلقائياً — مع طبقة DTO/mapper، وتوثيق OpenAPI/Swagger، ومخزن H2.

3
API interfaces
5
CRUD endpoints
H2
Store
Swagger/GraphiQL
Docs
المنهجية

تصميم طبقي web→service→repository يعرض مجالاً واحداً عبر REST وGraphQL وSpring Data REST

المكدس التقني
Java 17Spring Boot 3.3Spring Data JPAGraphQLSpring Data RESTH2OpenAPI/SwaggerMaven
الكلمات المفتاحية
Spring BootRESTGraphQLSpring Data RESTJPADTOSwaggerH2
التعمق

خدمة مصغّرة نظيفة ذات طبقات لإدارة الحسابات البنكية والعملاء، تعرض نفس البيانات بثلاث طرق لمقارنة الواجهات المكتوبة يدوياً مع المُولَّدة تلقائياً.

البنية الطبقية

الويب (وحدات تحكم REST + resolvers لـ GraphQL + Spring Data REST)
   │
طبقة الخدمة  (منطق الأعمال، @Transactional)
   │
المستودعات (Spring Data JPA)
   │
الكيانات  (BankAccount ── Customer، تعداد AccountType)

المجال

الكيانالحقول
BankAccountالمعرّف، التاريخ، الرصيد، العملة، AccountType، → Customer
Customerيملك عدة حسابات
AccountTypeتعداد (مثلاً CURRENT / SAVINGS)

الواجهات

  • REST /api/bankAccounts — CRUD كامل (GET/POST/PUT/DELETE) + Swagger UI
  • GraphQL — استعلامات accountsList، bankAccountById(id)، customersList + عمليات add/update/delete (GraphiQL)
  • Spring Data REST — مستودع معروض تلقائياً كنقاط نهاية hypermedia
  • طبقة DTO + mapper تفصل الكيانات عن سطح الـ API