دليل Spring Data JPA الكامل لجافا: أمثلة وطرق

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Spring Data JPA لجافا: دليل كامل مع أمثلة

ما هو Spring Data JPA ولماذا تحتاجه؟

Spring Data JPA هي مكتبة قوية من نظام Spring البيئي، توفر طبقة تجريد فوق Java Persistence API (JPA) لتبسيط العمل مع قواعد البيانات. إذا سبق لك كتابة DAO (Data Access Object) باستخدام EntityManager، فأنت تعلم مقدار الكود المتكرر الذي يجب كتابته: فتح المعاملات، إنشاء الاستعلامات، معالجة النتائج. Spring Data JPA يحل هذه المشكلة من خلال تقديم نهج تصريحي لإنشاء المستودعات (Repositories).

الفكرة الأساسية للمكتبة هي أن المطور يحتاج فقط إلى تعريف واجهة مستودع (Repository Interface) تمتد أحد الواجهات الأساسية (مثل JpaRepository)، ويقوم Spring Data JPA تلقائيًا بإنشاء التطبيق (Implementation) أثناء وقت التشغيل. علاوة على ذلك، تدعم المكتبة إنشاء الاستعلامات بناءً على أسماء الطرق: إذا سميت الطريقة findByLastName(String lastName)، سيفهم Spring Data JPA تلقائيًا أنه يجب تنفيذ الاستعلام SELECT * FROM users WHERE last_name = ?.

لماذا تحتاج هذا؟ أولاً، يقلل بشكل جذري من حجم الكود الذي تحتاج لكتابته وصيانته. ثانيًا، توفر المكتبة نهجًا موحدًا للعمل مع أنظمة قواعد بيانات مختلفة (MySQL, PostgreSQL, H2, Oracle وغيرها) عبر JPA. ثالثًا، يتكامل Spring Data JPA مع معاملات Spring والتخزين المؤقت ومكونات الإطار الأخرى، مما يجعل تطوير تطبيقات المؤسسات أكثر قابلية للتنبؤ وسهولة.

التثبيت

لا يتم تثبيت Spring Data JPA عبر pip أو npm، لأنه مكتبة Java. لتضمينها، يتم استخدام نظام بناء Maven أو Gradle. فيما يلي التبعيات الدقيقة لكلا النظامين.

Maven (pom.xml):

<!-- التبعية الأساسية لـ Spring Data JPA -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>3.2.0</version>
</dependency>

<!-- مشغل قاعدة البيانات (مثال لـ PostgreSQL) -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.7.1</version>
    <scope>runtime</scope>
</dependency>

Gradle (build.gradle):

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa:3.2.0'
    runtimeOnly 'org.postgresql:postgresql:42.7.1'
}

بعد إضافة التبعيات، لا تنسَ تكوين الاتصال بقاعدة البيانات في ملف application.properties أو application.yml.

# application.properties
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=user
spring.datasource.password=pass
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

بداية سريعة — مثال عملي بسيط

لنقم بإنشاء تطبيق بسيط لإدارة المستخدمين. سنحتاج إلى كيان (Entity)، ومستودع (Repository)، وخدمة (Service).

الخطوة 1. إنشاء كيان User

package com.example.demo.entity;

import jakarta.persistence.*;

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String firstName;

    @Column(nullable = false)
    private String lastName;

    @Column(unique = true, nullable = false)
    private String email;

    // المنشئات
    public User() {}

    public User(String firstName, String lastName, String email) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
    }

    // الدوال الجالبة والضابطة
    public Long getId() { return id; }                    

توصيات