Hibernate Validator এবং Apache Commons BeanUtils এর ইন্টিগ্রেশন করতে হলে, আমরা Hibernate Validator ব্যবহার করে Java Beans-এর প্রপার্টি ভ্যালিডেশন করব এবং BeanUtils ব্যবহার করে সেই Bean-এর প্রপার্টি কপি বা ম্যানিপুলেট করব। এই ইন্টিগ্রেশন আপনাকে একটি সহজ এবং কার্যকর উপায়ে ডেটা ভ্যালিডেট ও ম্যানিপুলেট করতে সাহায্য করবে।
কাজের ধাপ
- Hibernate Validator যোগ করা: Hibernate Validator ব্যবহার করে Bean-এর প্রপার্টিগুলোর ভ্যালিডেশন করতে হবে।
- BeanUtils ব্যবহার করা: Bean-এর প্রপার্টিগুলো এক অবজেক্ট থেকে আরেকটিতে কপি বা ম্যানিপুলেট করতে হবে।
- ইন্টিগ্রেশন: 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;
}
}কোডের ব্যাখ্যা
- Bean validation:
validateBean()মেথড Hibernate Validator ব্যবহার করে Bean-এর সমস্ত প্রপার্টি ভ্যালিডেট করে।- যদি কোনো ভ্যালিডেশন এরর থাকে, তবে সেগুলো কনসোল আউটপুটে দেখানো হয়।
- Property Copy:
- যদি ভ্যালিডেশন সফল হয়, তবে
BeanUtils.copyProperties()মেথড ব্যবহার করেsourcePersonথেকেtargetPerson-এ প্রপার্টিগুলো কপি করা হয়।
- যদি ভ্যালিডেশন সফল হয়, তবে
- আউটপুট:
- Target Bean-এর প্রপার্টিগুলো
sourcePersonথেকে কপি করার পর কনসোল আউটপুটে প্রদর্শিত হয়।
- Target Bean-এর প্রপার্টিগুলো
উদাহরণ আউটপুট
১. সফল ভ্যালিডেশন:
Target Name: John Doe
Target Age: 25২. ভ্যালিডেশন ব্যর্থ হলে:
Validation Error: Name cannot be null
Validation Error: Age cannot be nullCustom 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
Read more