Practical উদাহরণ: Spring Boot Application এ JPA ব্যবহার

JPA এবং Spring Data JPA Integration - জেপিএ  (JPA) - Java Technologies

293

Spring Boot একটি জনপ্রিয় Java ফ্রেমওয়ার্ক যা দ্রুত এবং সহজে Spring অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। Spring Boot তে JPA ব্যবহার করে ডেটাবেস অপারেশন খুব সহজ হয়, কারণ Spring Boot এর সাথে Spring Data JPA একটি শক্তিশালী সমন্বয় প্রদান করে, যা ডেটাবেসের CRUD (Create, Read, Update, Delete) অপারেশনগুলো পরিচালনা করতে সক্ষম।

এখানে, আমরা দেখবো কীভাবে Spring Boot অ্যাপ্লিকেশনে JPA ব্যবহার করে একটি সাধারণ CRUD অ্যাপ্লিকেশন তৈরি করা যায়।


প্রকল্পের সেটআপ

Step 1: Spring Boot Project তৈরি করা

আপনি Spring Initializr (https://start.spring.io/) ব্যবহার করে একটি Spring Boot প্রজেক্ট তৈরি করতে পারেন।

প্রজেক্টের জন্য এই ডিপেনডেন্সি গুলি অন্তর্ভুক্ত করুন:

  • Spring Web
  • Spring Data JPA
  • H2 Database (বা আপনার পছন্দের ডেটাবেস)

Step 2: পম (pom.xml) ফাইল কনফিগারেশন

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

এখানে, spring-boot-starter-data-jpa Spring Data JPA এর জন্য, এবং h2 ডেটাবেসটি ডেভেলপমেন্টের জন্য ব্যবহার করা হচ্ছে। আপনি MySQL বা PostgreSQL ব্যবহার করতে চাইলে তাদের ড্রাইভার যুক্ত করতে পারেন।

Step 3: Application.properties কনফিগারেশন

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

এখানে, H2 ডেটাবেস ব্যবহার করা হচ্ছে, এবং spring.jpa.hibernate.ddl-auto=update দিয়ে Hibernate কে Entity ক্লাসের উপর ভিত্তি করে টেবিল তৈরি করতে বলা হয়েছে।


ডেটাবেস মডেল (Entity)

Step 4: Entity ক্লাস তৈরি করা

এখন, একটি Employee Entity ক্লাস তৈরি করি যেটি Employee টেবিলের জন্য ম্যাপ হবে।

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;

@Entity
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    private String department;
    private double salary;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

এখানে, Employee Entity ক্লাস তৈরি হয়েছে যা Employee টেবিলের id, name, department, এবং salary ফিল্ডের সাথে ম্যাপ হবে। @GeneratedValue(strategy = GenerationType.IDENTITY) ব্যবহার করে id ফিল্ডের জন্য সিকোয়েন্স বা ইনক্রিমেন্টাল প্রাইমারি কী তৈরি করা হয়েছে।


রিপোজিটরি (Repository)

Step 5: Repository Interface তৈরি করা

Spring Data JPA এর মাধ্যমে ডেটাবেসের CRUD অপারেশনগুলি খুব সহজে করা যায়। এজন্য আমরা JpaRepository ইন্টারফেস ব্যবহার করব।

import org.springframework.data.jpa.repository.JpaRepository;

public interface EmployeeRepository extends JpaRepository<Employee, Long> {
    // You can define custom queries here if needed
}

এখানে, EmployeeRepository ইন্টারফেস JpaRepository<Employee, Long> এক্সটেন্ড করেছে, যা Employee Entity এর জন্য CRUD অপারেশন প্রদান করে।


সার্ভিস (Service)

Step 6: Service Class তৈরি করা

এখন, আমরা একটি Service ক্লাস তৈরি করবো যা আমাদের ব্যবসায়িক লজিক পরিচালনা করবে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class EmployeeService {

    @Autowired
    private EmployeeRepository employeeRepository;

    // Create or Update Employee
    public Employee saveEmployee(Employee employee) {
        return employeeRepository.save(employee);
    }

    // Get all employees
    public List<Employee> getAllEmployees() {
        return employeeRepository.findAll();
    }

    // Get employee by ID
    public Employee getEmployeeById(Long id) {
        return employeeRepository.findById(id).orElse(null);
    }

    // Delete employee
    public void deleteEmployee(Long id) {
        employeeRepository.deleteById(id);
    }
}

এখানে, EmployeeService ক্লাসটি EmployeeRepository ব্যবহার করে saveEmployee(), getAllEmployees(), getEmployeeById(), এবং deleteEmployee() মেথডগুলো কার্যকরী করছে।


কন্ট্রোলার (Controller)

Step 7: Controller Class তৈরি করা

এখন, আমরা একটি REST Controller তৈরি করবো যা HTTP রিকোয়েস্টের মাধ্যমে Employee Entity এর CRUD অপারেশনগুলো পরিচালনা করবে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/employees")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @PostMapping
    public Employee addEmployee(@RequestBody Employee employee) {
        return employeeService.saveEmployee(employee);
    }

    @GetMapping
    public List<Employee> getAllEmployees() {
        return employeeService.getAllEmployees();
    }

    @GetMapping("/{id}")
    public Employee getEmployeeById(@PathVariable Long id) {
        return employeeService.getEmployeeById(id);
    }

    @DeleteMapping("/{id}")
    public void deleteEmployee(@PathVariable Long id) {
        employeeService.deleteEmployee(id);
    }
}

এখানে, EmployeeController ক্লাসটি HTTP GET, POST, এবং DELETE রিকোয়েস্টের মাধ্যমে EmployeeService ক্লাসের মেথডগুলো কল করছে।


Step 8: Spring Boot Application ক্লাস তৈরি করা

সবশেষে, Spring Boot অ্যাপ্লিকেশন চালানোর জন্য @SpringBootApplication অ্যানোটেশন দিয়ে main মেথড তৈরি করুন।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class EmployeeApplication {

    public static void main(String[] args) {
        SpringApplication.run(EmployeeApplication.class, args);
    }
}

পরীক্ষা (Testing)

Spring Boot অ্যাপ্লিকেশন চালু হলে, আপনি Postman বা কোনো HTTP ক্লায়েন্ট ব্যবহার করে API রিকোয়েস্ট পাঠাতে পারেন।

API Endpoints:

  • POST /employees: নতুন Employee তৈরি করতে।
  • GET /employees: সকল Employee তালিকা পেতে।
  • GET /employees/{id}: নির্দিষ্ট Employee তথ্য পেতে।
  • DELETE /employees/{id}: নির্দিষ্ট Employee মুছে ফেলতে।

সারাংশ


Spring Boot অ্যাপ্লিকেশনে JPA ব্যবহার করে ডেটাবেসের CRUD অপারেশন পরিচালনা করতে খুবই সহজ এবং কার্যকর। আমরা Spring Data JPA এর মাধ্যমে Entity মডেল তৈরি করেছি, JpaRepository ব্যবহার করে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করেছি, এবং @RestController এর মাধ্যমে HTTP রিকোয়েস্ট হ্যান্ডেল করেছি। এইভাবে, আপনি Spring Boot অ্যাপ্লিকেশন তৈরির মাধ্যমে JPA ব্যবহার করে ডেটাবেসের সঙ্গে কার্যকরভাবে ইন্টারঅ্যাক্ট করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...