التحقق من صحة البيانات في Java: نظرة عامة على الأدوات والمكتبات
التحقق من صحة البيانات (فحص صحتها) هو أحد المراحل الأساسية في تطوير أي تطبيق. بدون التحقق الموثوق من بيانات الإدخال، يصبح التطبيق عرضة للأخطاء والسلوك غير الصحيح والهجمات. في Java، توجد عدة طرق ومكتبات مجربة تسمح بتنفيذ التحقق من الصحة بسرعة ومرونة وبأقل قدر من الكود النمطي.
في هذه المقالة، سنستعرض الأدوات الرئيسية للتحقق من صحة البيانات في Java: معيار Bean Validation (Jakarta Validation)، وأشهر تطبيق له Hibernate Validator، بالإضافة إلى بديل وهو Apache Commons Validator. وسنتطرق بشكل منفصل إلى التحقق اليدوي للحالات البسيطة.
1. معيار Bean Validation (Jakarta Validation)
Bean Validation (سابقًا JSR 380، والآن Jakarta Validation) هو مواصفة تحدد مجموعة من التعليقات التوضيحية للتحقق التصريحي من صحة كائنات Java. الفكرة الأساسية: تصف قواعد التحقق مباشرة في حقول الفئة باستخدام التعليقات التوضيحية، ويقوم محرك التحقق تلقائيًا بفحصها.
التعليقات التوضيحية الرئيسية
@NotNull— يجب ألا تكون القيمة null.@NotEmpty— يجب ألا تكون السلسلة النصية أو المجموعة أو المصفوفة فارغة (وليست null).@NotBlank— يجب ألا تكون السلسلة النصية فارغة أو تتكون فقط من مسافات.@Size(min, max)— تحديد طول السلسلة النصية أو حجم المجموعة أو المصفوفة.@Min/@Max— قيود رقمية.@Pattern(regexp = "...")— التحقق باستخدام تعبير منتظم.@Email— التحقق من تنسيق عنوان البريد الإلكتروني.
مثال على الاستخدام
import jakarta.validation.constraints.*;
public class User { @NotBlank(message = "الاسم لا يمكن أن يكون فارغًا") @Size(min = 2, max = 50) private String name;
@Email(message = "بريد إلكتروني غير صحيح") @NotNull private String email;
@Min(18) @Max(120) private int age;
// getters and setters}لتشغيل التحقق، يُستخدم كائن Validator:
import jakarta.validation.*;import java.util.Set;
public class ValidationExample { public static void main(String[] args) { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator();
User user = new User(); user.setName("A"); user.setEmail("invalid-email"); user.setAge(10);
Set<ConstraintViolation<User>> violations = validator.validate(user); for (ConstraintViolation<User> violation : violations) { System.out.println(violation.getMessage()); } }}2. Hibernate Validator — تطبيق المعيار
Hibernate Validator هو التطبيق المرجعي لمواصفة Bean Validation. وهو يدعم بشكل كامل جميع التعليقات التوضيحية لـ Jakarta Validation ويضيف امتدادات خاصة به، مثل @URL و @CreditCardNumber و @ISBN وغيرها.
إمكانيات إضافية
- مدققات مخصصة — يمكن إنشاء تعليقات توضيحية ومنطق تحقق خاص بك.
- مجموعات التحقق — فحص مجموعات مختلفة من القواعد حسب السياق (مثل الإنشاء مقابل التحديث).
- التكامل مع Spring Boot و Java EE / Jakarta EE بشكل افتراضي.
مثال على مدقق مخصص
import jakarta.validation.Constraint;import jakarta.validation.Payload;import java.lang.annotation.*;
@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = PhoneValidator.class)public @interface ValidPhone { String message() default "رقم هاتف غير صحيح";