Hibernate Validator এর সাথে BeanUtils এর ইন্টিগ্রেশন

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

328

Hibernate Validator এবং Apache Commons BeanUtils এর ইন্টিগ্রেশন করতে হলে, আমরা Hibernate Validator ব্যবহার করে Java Beans-এর প্রপার্টি ভ্যালিডেশন করব এবং BeanUtils ব্যবহার করে সেই Bean-এর প্রপার্টি কপি বা ম্যানিপুলেট করব। এই ইন্টিগ্রেশন আপনাকে একটি সহজ এবং কার্যকর উপায়ে ডেটা ভ্যালিডেট ও ম্যানিপুলেট করতে সাহায্য করবে।


কাজের ধাপ

  1. Hibernate Validator যোগ করা: Hibernate Validator ব্যবহার করে Bean-এর প্রপার্টিগুলোর ভ্যালিডেশন করতে হবে।
  2. BeanUtils ব্যবহার করা: Bean-এর প্রপার্টিগুলো এক অবজেক্ট থেকে আরেকটিতে কপি বা ম্যানিপুলেট করতে হবে।
  3. ইন্টিগ্রেশন: Bean-এর ভ্যালিডেশন সফল হলে প্রপার্টি কপি করা হবে।

Maven ডিপেনডেন্সি

pom.xml ফাইলে Hibernate Validator এবং BeanUtils ডিপেনডেন্সি যোগ করুন।

<dependencies>
    <!-- Hibernate Validator -->
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.2.5.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
        <version>3.0.0</version>
    </dependency>

    <!-- Apache Commons BeanUtils -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.4</version>
    </dependency>
</dependencies>

উদাহরণ: Hibernate Validator এবং BeanUtils ইন্টিগ্রেশন

1. Bean তৈরি করা

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

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

    @NotNull(message = "Age cannot be null")
    private Integer age;

    public Person() {}

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    // Getters and Setters
    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

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

2. ভ্যালিডেশন এবং প্রপার্টি কপি করা

import org.apache.commons.beanutils.BeanUtils;

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

public class HibernateValidatorBeanUtilsExample {
    public static void main(String[] args) {
        try {
            // Source Bean
            Person sourcePerson = new Person("John Doe", 25);

            // Validate the source object
            if (validateBean(sourcePerson)) {
                // Target Bean
                Person targetPerson = new Person();

                // Copy properties from source to target
                BeanUtils.copyProperties(targetPerson, sourcePerson);

                // Output copied properties
                System.out.println("Target Name: " + targetPerson.getName());
                System.out.println("Target Age: " + targetPerson.getAge());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // Bean validation method
    private static boolean validateBean(Object bean) {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();

        // Validate the bean
        Set<ConstraintViolation<Object>> violations = validator.validate(bean);

        // Check for validation errors
        if (!violations.isEmpty()) {
            for (ConstraintViolation<Object> violation : violations) {
                System.out.println("Validation Error: " + violation.getMessage());
            }
            return false;
        }
        return true;
    }
}

কোডের ব্যাখ্যা

  1. Bean validation:
    • validateBean() মেথড Hibernate Validator ব্যবহার করে Bean-এর সমস্ত প্রপার্টি ভ্যালিডেট করে।
    • যদি কোনো ভ্যালিডেশন এরর থাকে, তবে সেগুলো কনসোল আউটপুটে দেখানো হয়।
  2. Property Copy:
    • যদি ভ্যালিডেশন সফল হয়, তবে BeanUtils.copyProperties() মেথড ব্যবহার করে sourcePerson থেকে targetPerson-এ প্রপার্টিগুলো কপি করা হয়।
  3. আউটপুট:
    • Target Bean-এর প্রপার্টিগুলো sourcePerson থেকে কপি করার পর কনসোল আউটপুটে প্রদর্শিত হয়।

উদাহরণ আউটপুট

১. সফল ভ্যালিডেশন:

Target Name: John Doe
Target Age: 25

২. ভ্যালিডেশন ব্যর্থ হলে:

Validation Error: Name cannot be null
Validation Error: Age cannot be null

Custom Validators এর সাথে BeanUtils ইন্টিগ্রেশন

কাস্টম ভ্যালিডেটর ব্যবহার করেও একইভাবে ইন্টিগ্রেশন করা যায়। Hibernate Validator আপনাকে Bean-এ কাস্টম ভ্যালিডেশন লজিক যোগ করতে দেয়। উদাহরণস্বরূপ:

Custom Validator উদাহরণ

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class CustomNameValidator implements ConstraintValidator<ValidName, String> {
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        return value != null && value.matches("[A-Za-z ]+");
    }
}

সারাংশ

  • Hibernate Validator ব্যবহার করে Java Bean ভ্যালিডেট করার পরে BeanUtils এর মাধ্যমে প্রপার্টি ম্যানিপুলেশন সহজ করা যায়।
  • BeanUtils এবং Hibernate Validator-এর ইন্টিগ্রেশন জটিল ডেটা ভ্যালিডেশন এবং ম্যানিপুলেশনকে কার্যকরভাবে সমাধান করে।
  • কাস্টম ভ্যালিডেশন লজিক যোগ করার জন্য Hibernate Validator-এর ক্ষমতাকে কাস্টমাইজ করা সম্ভব।
Content added || updated By
Promotion

Are you sure to start over?

Loading...