Bean Validation হল Java SE এবং Java EE এর জন্য একটি স্ট্যান্ডার্ড API যা ডেটা ভ্যালিডেশন নিশ্চিত করতে সাহায্য করে। Hibernate এর মাধ্যমে Bean Validation এর ইন্টিগ্রেশন করা যায়, যা Java Bean-এর অবজেক্ট ডেটা ভ্যালিডেশন কার্যকর করে। Hibernate Bean Validation সাধারণত JSR 303 (যা পরে JSR 380 তে আপডেট হয়েছে) ফিচার হিসেবে ব্যবহৃত হয় এবং এটি একে অপরের সাথে ইন্টিগ্রেটেড হতে পারে।
Hibernate এর Bean Validation ইন্টিগ্রেশন সাধারণত Hibernate Validator লাইব্রেরি ব্যবহার করে করা হয়, যা JSR 303 এর একটি বাস্তবায়ন। Hibernate Validator মূলত annotation-based validation সাপোর্ট করে, যা JavaBeans অবজেক্টগুলির জন্য ফিল্ড-ভিত্তিক ডেটা ভ্যালিডেশন প্রদান করে।
Hibernate Bean Validation-এর ধারণা:
Hibernate Validator JavaBeans এ validation constraints প্রয়োগ করে এবং সেই অনুযায়ী validation errors প্রদান করে। উদাহরণস্বরূপ, একটি ফিল্ডে নির্দিষ্ট মান (যেমন একটি ইমেইল ঠিকানা) চেক করা হয়, এবং যদি সেই মানটি সঠিক না হয় তবে তা এরোর হিসাবে ফিরিয়ে দেয়।
Hibernate Bean Validationে Annotations (যেমন @NotNull, @Email, @Min, @Max, @Size ইত্যাদি) ব্যবহার করে বিভিন্ন ডেটা ভ্যালিডেশন করা হয়।
Hibernate Bean Validation এর মূল অ্যানোটেশন:
@NotNull: ক্ষেত্রটি খালি থাকতে পারবে না।@Size: স্ট্রিং, এরে বা কালেকশনের আকারের জন্য একটি রেঞ্জ নির্ধারণ করে।@Email: একটি বৈধ ইমেইল ঠিকানা নিশ্চিত করতে ব্যবহার করা হয়।@Min/@Max: একটি মানের সর্বনিম্ন বা সর্বোচ্চ সীমা নির্ধারণ করে।@Pattern: একটি রেগুলার এক্সপ্রেশন দিয়ে একটি ফিল্ডের মান চেক করা হয়।@Past/@Future: তারিখের জন্য, যাতে এটি অতীত বা ভবিষ্যত হতে হবে।
Hibernate Validator এবং Bean Validation এর ইন্টিগ্রেশন
Hibernate Validator ব্যবহার করার জন্য আপনাকে প্রথমে Hibernate Validator লাইব্রেরি পোমে অন্তর্ভুক্ত করতে হবে।
Step 1: Maven Dependencies
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version> <!-- Use latest version -->
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>javax.validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
</dependencies>
এখানে, Hibernate Validator এবং javax.validation-api লাইব্রেরি দুটি নির্ধারণ করা হয়েছে।
Step 2: Bean Validation Example
এখন, Hibernate Bean Validation এবং JSR 303/JSR 380 এর ব্যবহার দেখবো।
import javax.validation.constraints.*;
import javax.validation.Valid;
public class Employee {
@NotNull(message = "ID cannot be null")
private Integer id;
@NotNull(message = "Name cannot be null")
@Size(min = 3, max = 100, message = "Name must be between 3 and 100 characters")
private String name;
@Email(message = "Invalid email address")
private String email;
@Min(value = 1000, message = "Salary must be greater than or equal to 1000")
@Max(value = 50000, message = "Salary must be less than or equal to 50000")
private Double salary;
// Getters and Setters
}
এখানে:
@NotNull,@Size,@Email,@Min, এবং@Maxদ্বারা বিভিন্ন প্রকার ভ্যালিডেশন করা হয়েছে।
Step 3: Validation Code Implementation
Hibernate Validator ব্যবহার করে Bean Validation করার জন্য আপনি ValidatorFactory এবং Validator ক্লাস ব্যবহার করতে পারেন। এটি আপনার JavaBean অবজেক্টের ডেটা ভ্যালিডেশন চালাবে।
import javax.validation.*;
import java.util.Set;
public class EmployeeValidationTest {
public static void main(String[] args) {
// Create an Employee object with invalid data
Employee employee = new Employee();
employee.setId(null); // Invalid
employee.setName("Jo"); // Invalid, Name should be at least 3 characters
employee.setEmail("invalid-email"); // Invalid email
employee.setSalary(150000.0); // Invalid, Salary exceeds max limit
// Get ValidatorFactory and Validator instances
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
// Perform validation
Set<ConstraintViolation<Employee>> violations = validator.validate(employee);
// Print validation errors
for (ConstraintViolation<Employee> violation : violations) {
System.out.println(violation.getPropertyPath() + " " + violation.getMessage());
}
}
}
Output:
id must not be null
name Name must be between 3 and 100 characters
email Invalid email address
salary Salary must be less than or equal to 50000
এই উদাহরণে, Employee অবজেক্টের ডেটা ভ্যালিডেশন করা হয়েছে এবং সেখানে বিভিন্ন ত্রুটি (invalid data) পাওয়া গেছে। Hibernate Validator এবং Bean Validation ক্লাসগুলি ব্যবহার করে, আপনি সহজেই ডেটা ভ্যালিডেশন চেক করতে পারেন।
Hibernate Validator এর প্রয়োজনীয়তা:
- Data Integrity:
- Hibernate Validator ডেটার সঠিকতা নিশ্চিত করে। ডেটাবেসে সেভ করার আগে এটি যাচাই করে যে সমস্ত ডেটা সঠিক এবং ফরম্যাটে আছে কিনা। এর মাধ্যমে আপনি ভুল ডেটা বা ফরম্যাটের ডেটা সেভ হওয়া প্রতিরোধ করতে পারেন।
- Custom Validation Rules:
- Hibernate Validator কাস্টম ভ্যালিডেশন রুলস এবং কাস্টম কনস্ট্রেইন্ট তৈরি করার সুযোগ দেয়। আপনি নিজের ভ্যালিডেশন লজিক এবং শর্ত তৈরি করে রাখতে পারেন।
- Seamless Integration with Hibernate:
- Hibernate ORM-এর সাথে Hibernate Validator খুব সহজেই একত্রিত হয়, যাতে ডেটাবেসে অবজেক্ট সংরক্ষণ করার আগে প্রয়োজনীয় ভ্যালিডেশন করা যায়।
- Declarative Validation:
- Hibernate Validator আ্যানোটেশন ব্যবহার করে ডেটা ভ্যালিডেশন সম্পন্ন করা যায়, যার ফলে কোডে কমপ্লেক্স লজিক থাকলেও ডেটা ভ্যালিডেশন সরল এবং পরিষ্কার থাকে।
- Efficient Error Handling:
- Hibernate Validator সহ Bean Validation ব্যবহারে আপনি ব্যতিক্রমী ত্রুটির বার্তা ব্যবহার করে ডেটা ভ্যালিডেশন এরর হ্যান্ডলিং সহজে পরিচালনা করতে পারেন। এটি ConstraintViolationException বা ConstraintViolation এর মাধ্যমে ত্রুটি জানিয়ে দেয়।
- Compatibility:
- Hibernate Validator JSR 303/JSR 380 স্ট্যান্ডার্ডের সাথে সম্পূর্ণভাবে সামঞ্জস্যপূর্ণ। এটি Java SE এবং Java EE অ্যাপ্লিকেশনগুলির মধ্যে ব্যবহৃত হতে পারে এবং একটি সুসংগত পদ্ধতিতে ডেটা ভ্যালিডেশন নিশ্চিত করে।
Hibernate Bean Validation এবং Hibernate Validator এর ইন্টিগ্রেশন ডেটা ভ্যালিডেশনে একটি শক্তিশালী সরঞ্জাম সরবরাহ করে। Annotations এর মাধ্যমে সহজেই JavaBeans অবজেক্টের ডেটা ভ্যালিডেশন করা যায়, যা ডেটাবেসে ইনসার্ট করার আগে সঠিকতা নিশ্চিত করে। Hibernate Validator আপনাকে custom validation এবং runtime validation এর সুবিধা প্রদান করে, যা কোডের মান উন্নত করে এবং ডেটার সঠিকতা নিশ্চিত করে।
Read more