@Valid এবং @Validated Annotation এর ব্যবহার

Spring Boot এবং Validation - স্প্রিং বুট (Spring Boot) - Java Technologies

251

স্প্রিং বুট অ্যাপ্লিকেশনগুলিতে ইনপুট ভ্যালিডেশন অত্যন্ত গুরুত্বপূর্ণ একটি দিক। ডাটা ভ্যালিডেশন নিশ্চিত করতে JSR-303/JSR-380 স্পেসিফিকেশন ব্যবহার করা হয়, যা Hibernate Validator এর মাধ্যমে স্প্রিং বুটে ইমপ্লিমেন্ট করা হয়। @Valid এবং @Validated অ্যানোটেশন দুটি মূলত ডাটা ভ্যালিডেশন কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু পার্থক্য রয়েছে। এই অ্যানোটেশন দুটি মূলত কন্ট্রোলার, সার্ভিস এবং ডোমেইন মডেল ক্লাসে ব্যবহার করা হয়।


@Valid অ্যানোটেশন

@Valid অ্যানোটেশনটি JSR-303 এর অংশ হিসেবে ব্যবহার করা হয় এবং এটি ভ্যালিডেশন সম্পাদন করতে ব্যবহৃত হয়। এটি মূলত Hibernate Validator ইন্টারফেসের মাধ্যমে ক্লাস বা ফিল্ডের ভ্যালিডেশন নিশ্চিত করে। @Valid সাধারণত ফর্ম ডাটা, API রিকোয়েস্ট বডি, অথবা কোনো ডোমেইন অবজেক্টে প্রয়োগ করা হয়।

ব্যবহারের স্থান

  • @Valid সাধারণত ফিল্ড ভ্যালিডেশন এবং অবজেক্ট লেভেলে ব্যবহৃত হয়।

উদাহরণ:

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

public class User {

    @NotNull
    private String username;

    @Size(min = 6, max = 20)
    private String password;

    @Valid
    private Address address;

    // getters and setters
}

class Address {

    @NotNull
    private String street;

    @NotNull
    private String city;

    // getters and setters
}

এখানে, User ক্লাসে @Valid অ্যানোটেশন ব্যবহার করা হয়েছে, যার মাধ্যমে Address ক্লাসের ভ্যালিডেশন কার্যকর হবে। যখন User অবজেক্টটি @Valid দিয়ে ভ্যালিডেট করা হয়, তখন তার অভ্যন্তরে থাকা Address অবজেক্টও ভ্যালিডেট হবে।

কন্ট্রোলার লেভেলে উদাহরণ:

import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@RestController
@RequestMapping("/user")
public class UserController {

    @PostMapping("/create")
    public String createUser(@RequestBody @Valid User user) {
        // user object is validated
        return "User created successfully!";
    }
}

এখানে, @RequestBody এর সাথে @Valid অ্যানোটেশন ব্যবহার করা হয়েছে, যাতে ইনকামিং JSON ডেটা অবজেক্টে রূপান্তর করার সময় User এবং তার অভ্যন্তরীণ Address অবজেক্ট ভ্যালিডেট করা হয়।


@Validated অ্যানোটেশন

@Validated অ্যানোটেশনটি Spring-specific এবং @Valid এর মতোই ভ্যালিডেশন কাজ করে, তবে এতে কিছু অতিরিক্ত সুবিধা রয়েছে। এটি গ্রুপ ভিত্তিক ভ্যালিডেশন (group validation) সমর্থন করে, যা @Valid এর মাধ্যমে সম্ভব নয়। এর মাধ্যমে আপনি নির্দিষ্ট গ্রুপ অনুযায়ী ভ্যালিডেশন নির্ধারণ করতে পারেন।

ব্যবহারের স্থান

  • @Validated অ্যানোটেশনটি স্প্রিং কনট্রোলার বা সার্ভিস লেয়ার তে ব্যবহার করা হয়, যেখানে ভ্যালিডেশন গ্রুপের প্রয়োজন হতে পারে।

উদাহরণ:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.springframework.validation.annotation.Validated;
import javax.validation.groups.Default;

public class User {

    @NotNull(groups = {Default.class, CreateGroup.class})
    private String username;

    @Size(min = 6, max = 20, groups = CreateGroup.class)
    private String password;

    // getters and setters
}

interface CreateGroup {}

এখানে, @Validated এবং গ্রুপ ব্যবহার করা হয়েছে। CreateGroup গ্রুপের জন্য শুধুমাত্র password ভ্যালিডেশন কার্যকর হবে, তবে username গ্রুপের জন্য উভয় গ্রুপে কার্যকর থাকবে।

কন্ট্রোলার লেভেলে উদাহরণ:

import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;

@RestController
@RequestMapping("/user")
public class UserController {

    @PostMapping("/create")
    public String createUser(@RequestBody @Validated(CreateGroup.class) User user) {
        // user object is validated according to the CreateGroup
        return "User created successfully!";
    }
}

এখানে @Validated(CreateGroup.class) ব্যবহার করা হয়েছে, যার মাধ্যমে শুধুমাত্র CreateGroup গ্রুপের জন্য নির্ধারিত ভ্যালিডেশন কার্যকর হবে। অন্য কোনো গ্রুপের জন্য ভ্যালিডেশন কার্যকর হবে না।


@Valid এবং @Validated এর পার্থক্য

বৈশিষ্ট্য@Valid@Validated
গ্রুপ ভিত্তিক ভ্যালিডেশনসমর্থন করে নাগ্রুপ ভিত্তিক ভ্যালিডেশন সমর্থন করে
অব্যবহৃতশুধুমাত্র ফিল্ড/অবজেক্ট ভ্যালিডেশনগ্রুপ ভিত্তিক ভ্যালিডেশন এবং স্প্রিং কনট্রোলারে ব্যবহৃত হয়
অ্যাপ্লিকেশনসাধারণত Hibernate Validator এর সাথে ব্যবহৃতস্প্রিং কনট্রোলার বা সার্ভিস লেয়ারে ব্যবহৃত

সারাংশ

@Valid এবং @Validated দুটি অ্যানোটেশনই স্প্রিং বুটে ভ্যালিডেশন নিশ্চিত করার জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু পার্থক্য রয়েছে। @Valid সাধারণত সাধারণ ফিল্ড বা অবজেক্ট ভ্যালিডেশনের জন্য ব্যবহৃত হয়, যেখানে @Validated স্প্রিং কনট্রোলার এবং সার্ভিস লেয়ারে গ্রুপ ভিত্তিক ভ্যালিডেশন সমর্থন করে। এই দুটি অ্যানোটেশন সঠিক ইনপুট ডেটা নিশ্চিত করতে সাহায্য করে এবং অ্যাপ্লিকেশনের নিরাপত্তা এবং নির্ভরযোগ্যতা বৃদ্ধি করে।


Content added By
Promotion

Are you sure to start over?

Loading...