Bean এর প্রপার্টি Validation এর ধারণা

Bean Validation (বিন ভ্যালিডেশন) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

396

Bean Validation হল একটি প্রক্রিয়া যা Java Bean-এ থাকা প্রপার্টিগুলির মান যাচাই করার জন্য ব্যবহৃত হয়। এটি সাধারণত ফর্ম ডেটা, ইউজার ইনপুট, বা অন্যান্য ডেটা যেগুলি Bean এর প্রপার্টির মাধ্যমে ম্যানেজ করা হয়, সেগুলির জন্য ব্যবহৃত হয়। Bean Validation এর মাধ্যমে নিশ্চিত করা হয় যে Bean এর প্রপার্টি গুলি সঠিক এবং প্রয়োজনীয় শর্তগুলি পূরণ করছে।

Java Bean Validation সাধারণত দুটি স্তরে কাজ করে:

  1. সামান্য যাচাই (Simple Validation): প্রপার্টি মানের সাধারণ বৈধতা (যেমন, null চেক বা মিনিমাম/ম্যাক্সিমাম ভ্যালু যাচাই করা)।
  2. কাস্টম যাচাই (Custom Validation): যখন সাধারণ যাচাইয়ের বাইরে কিছু বিশেষ যাচাই প্রয়োজন হয়, যেমন কাস্টম ভ্যালিডেশন লজিক প্রয়োগ করা।

Java Bean Validation করতে আমরা সাধারণত Javax Validation API (JSR-303/JSR-380) ব্যবহার করি, যার মধ্যে বিভিন্ন বিল্ট-ইন কনস্ট্রেইন্ট (Constraint) এন্ড অ্যাট্রিবিউট রয়েছে, যেমন @NotNull, @Size, @Min, @Max, ইত্যাদি।


1. Java Bean Validation API

Java Bean Validation API (JSR-303) একটি নির্দিষ্ট স্পেসিফিকেশন যা Bean প্রপার্টির বৈধতা যাচাই করার জন্য ব্যবহৃত হয়। @Valid এবং বিভিন্ন কনস্ট্রেইন্ট অ্যানোটেশন ব্যবহার করে Bean এর প্রপার্টি গুলির যাচাই করা যায়।

Bean Validation এর সাধারণ ধাপ:

  1. অ্যানোটেশন ব্যবহার করা: Bean-এর প্রপার্টিতে কনস্ট্রেইন্ট অ্যাপ্লাই করতে আপনি বিভিন্ন অ্যানোটেশন ব্যবহার করেন (যেমন @NotNull, @Size, @Email ইত্যাদি)।
  2. Validator ব্যবহার করা: একটি Validator অবজেক্ট ব্যবহার করে Bean বা প্রপার্টি যাচাই করা হয়।
  3. ভ্যালিডেশন ফলাফল: যদি Bean এর প্রপার্টি কোনো কনস্ট্রেইন্ট ভঙ্গ করে, তবে এটি একটি ভ্যালিডেশন ফলাফল প্রদান করে।

2. Bean Validation উদাহরণ

উদাহরণ ১: Bean Validation এর জন্য অ্যানোটেশন ব্যবহার

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.constraints.Min;

public class Person {
    @NotNull(message = "Name cannot be null")
    @Size(min = 2, max = 50, message = "Name should be between 2 and 50 characters")
    private String name;

    @Min(value = 18, message = "Age must be at least 18")
    private int age;

    // Getter and Setter methods
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

ব্যাখ্যা:

  1. @NotNull: এটি নিশ্চিত করে যে name প্রপার্টি null না হয়।
  2. @Size: এটি নিশ্চিত করে যে name প্রপার্টি ২ থেকে ৫০ ক্যারেক্টারের মধ্যে থাকবে।
  3. @Min: এটি নিশ্চিত করে যে age প্রপার্টির মান ১৮ অথবা তার বেশি হতে হবে।

উদাহরণ ২: Bean Validation ফলাফল যাচাই করা

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.ConstraintViolation;
import java.util.Set;

public class BeanValidationExample {
    public static void main(String[] args) {
        // Create a new Person object
        Person person = new Person();
        person.setName("J");  // Invalid name
        person.setAge(17);    // Invalid age

        // Create a ValidatorFactory
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();

        // Validate the person object
        Set<ConstraintViolation<Person>> violations = validator.validate(person);

        // Check if any violations exist
        if (!violations.isEmpty()) {
            // Print violation messages
            for (ConstraintViolation<Person> violation : violations) {
                System.out.println(violation.getMessage());
            }
        } else {
            System.out.println("No violations, the bean is valid.");
        }
    }
}

ব্যাখ্যা:

  • Validator: Bean-এর প্রপার্টি যাচাই করার জন্য Validator অবজেক্ট তৈরি করা হয়েছে।
  • ConstraintViolation: ভ্যালিডেশন ফলাফল একটি সেট আকারে পাওয়া যায়, যেখানে প্রতিটি ভায়োলেশন বার্তা থাকে।

আউটপুট:

Name should be between 2 and 50 characters
Age must be at least 18

এখানে, name এবং age প্রপার্টির ভ্যালিডেশন ভাঙছে, তাই দুটি ভায়োলেশন বার্তা দেখা যাবে।


3. কাস্টম Bean Validation

যদি আপনি কিছু কাস্টম ভ্যালিডেশন করতে চান, যেমন PhoneNumber ভ্যালিডেশন বা কোনো নির্দিষ্ট শর্তে প্রপার্টি যাচাই, তাহলে Custom Validator তৈরি করা যায়।

কাস্টম ভ্যালিডেশন উদাহরণ:

  1. Custom Annotation তৈরি করা:
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Constraint(validatedBy = PhoneNumberValidator.class)
@Target({ ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidPhoneNumber {
    String message() default "Invalid phone number";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
  1. Custom Validator তৈরি করা:
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class PhoneNumberValidator implements ConstraintValidator<ValidPhoneNumber, String> {
    @Override
    public void initialize(ValidPhoneNumber constraintAnnotation) {}

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value == null) {
            return true; // assuming null is valid
        }
        // Basic phone number validation (just an example)
        return value.matches("\\d{10}");
    }
}
  1. Custom Validator ব্যবহার করা:
public class Person {
    @ValidPhoneNumber
    private String phoneNumber;

    // Getter and Setter methods
    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

ব্যাখ্যা:

  • Custom Annotation: @ValidPhoneNumber কাস্টম অ্যানোটেশনটি ব্যবহার করে PhoneNumberValidator ক্লাসে ফোন নম্বর যাচাই করা হয়েছে।
  • PhoneNumberValidator: এই ক্লাসে কাস্টম লজিক ব্যবহার করে ফোন নম্বর যাচাই করা হয়।

সারাংশ

  • Java Bean Validation হল একটি শক্তিশালী উপায় Java Bean-এর প্রপার্টির বৈধতা যাচাই করার জন্য। এটি সাধারণত @NotNull, @Size, @Min` এর মতো বিভিন্ন বিল্ট-ইন অ্যানোটেশন ব্যবহার করে করা হয়।
  • Bean Validation API (JSR 303/JSR 380) ব্যবহার করে আপনি Bean প্রপার্টির জন্য বিভিন্ন কনস্ট্রেইন্ট অ্যাপ্লাই করতে পারেন এবং Validator ক্লাস ব্যবহার করে সেটি যাচাই করতে পারেন।
  • আপনি যদি কাস্টম ভ্যালিডেশন করতে চান, তবে Custom Annotations এবং Constraint Validators তৈরি করে নির্দিষ্ট শর্তে ডেটা যাচাই করা সম্ভব।
Content added || updated By
Promotion

Are you sure to start over?

Loading...