Spring Boot এর সাথে JPA Integration

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

320

Spring Boot এবং JPA (Java Persistence API) এর একত্রিত ব্যবহার আপনাকে ডেটাবেস ইন্টিগ্রেশন খুব সহজ এবং দ্রুত করতে সহায়তা করে। Spring Boot একটি জনপ্রিয় ফ্রেমওয়ার্ক যা Java অ্যাপ্লিকেশন তৈরি এবং চালানোর প্রক্রিয়াকে সরল করে, এবং JPA একটি Java API যা ডেটাবেসে ডেটা সঞ্চয়, পুনরুদ্ধার, এবং পরিচালনার জন্য ব্যবহৃত হয়।

Spring Boot এবং JPA একত্রিত করে আপনি ORM (Object-Relational Mapping) ভিত্তিক অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে Spring Data JPA আপনাকে সহজেই ডেটাবেস অপারেশন করতে সহায়তা করবে।


Spring Boot এবং JPA Integration এর ধাপ


Spring Boot অ্যাপ্লিকেশন তৈরির জন্য কয়েকটি সাধারণ পদক্ষেপ অনুসরণ করতে হবে:

  1. Spring Boot প্রকল্প তৈরি করা
  2. ডিপেনডেন্সি যুক্ত করা
  3. ডেটাবেস কনফিগারেশন করা
  4. Entity ক্লাস তৈরি করা
  5. Repository Interface তৈরি করা
  6. Service ক্লাস তৈরি করা
  7. Controller তৈরি করা (Optional)

1. Spring Boot প্রকল্প তৈরি করা

Spring Boot প্রকল্প তৈরি করতে, আপনি Spring Initializr ব্যবহার করতে পারেন:

Dependency নির্বাচন করুন:

  • Spring Web: ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য।
  • Spring Data JPA: JPA ভিত্তিক ডেটাবেস ইন্টিগ্রেশন এর জন্য।
  • H2 Database (বা অন্য ডেটাবেস, যেমন MySQL/PostgreSQL): ডেটাবেস ব্যবহারের জন্য।

আপনার প্রজেক্টের জন্য প্যাকেজ এবং অন্যান্য কনফিগারেশন সেট করুন এবং Generate বাটনে ক্লিক করে ডাউনলোড করুন।


2. ডিপেনডেন্সি যুক্ত করা

pom.xml বা build.gradle ফাইলে প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করুন।

pom.xml (Maven এর জন্য):

<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>
</dependencies>

build.gradle (Gradle এর জন্য):

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'com.h2database:h2'
}

এই ডিপেনডেন্সিগুলি আপনার Spring Boot অ্যাপ্লিকেশনে JPA এবং H2 ডেটাবেস সাপোর্ট যোগ করবে। আপনি H2 এর পরিবর্তে MySQL বা PostgreSQLও ব্যবহার করতে পারেন।


3. ডেটাবেস কনফিগারেশন করা

application.properties বা application.yml ফাইলে ডেটাবেস কনফিগারেশন সেট করতে হবে।

application.properties (H2 Database):

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

application.properties (MySQL Database):

spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

এখানে:

  • spring.jpa.hibernate.ddl-auto=update: Hibernate আপনার Entity গুলির উপর ভিত্তি করে ডেটাবেস স্কিমা আপডেট করবে।
  • spring.jpa.show-sql=true: SQL কুয়েরি কনসোল আউটপুটে দেখাবে।

4. Entity ক্লাস তৈরি করা

JPA তে Entity ক্লাস তৈরি করতে @Entity অ্যানোটেশন ব্যবহার করা হয়। এই ক্লাসটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করবে।

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Employee {

    @Id
    private Long id;
    private String name;
    private double salary;

    // Constructors, getters and setters
    public Employee() {}

    public Employee(Long id, String name, double salary) {
        this.id = id;
        this.name = name;
        this.salary = salary;
    }

    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 double getSalary() {
        return salary;
    }

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

এখানে:

  • @Entity: Entity ক্লাস চিহ্নিত করে।
  • @Id: প্রাইমারি কী (Primary Key) হিসেবে ব্যবহার করা হয়।

5. Repository Interface তৈরি করা

JPA তে ডেটাবেস অপারেশন করতে Spring Data JPA একটি Repository Interface সরবরাহ করে, যা সাধারণ CRUD অপারেশন যেমন save(), findAll(), findById() ইত্যাদি সরবরাহ করে।

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

public interface EmployeeRepository extends JpaRepository<Employee, Long> {
    // Custom query methods can be added here
    List<Employee> findBySalaryGreaterThan(double salary);
}

এখানে:

  • JpaRepository ইন্টারফেসটি Employee Entity এর জন্য CRUD অপারেশন সরবরাহ করে।
  • findBySalaryGreaterThan: এটি একটি কাস্টম কুয়েরি মেথড যা বেতনের উপর ভিত্তি করে ফলাফল রিটার্ন করবে।

6. Service ক্লাস তৈরি করা

Service ক্লাসের মাধ্যমে আপনি Repository এর কার্যক্রম পরিচালনা করতে পারেন।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class EmployeeService {

    @Autowired
    private EmployeeRepository employeeRepository;

    public List<Employee> getEmployeesBySalary(double salary) {
        return employeeRepository.findBySalaryGreaterThan(salary);
    }

    public Employee saveEmployee(Employee employee) {
        return employeeRepository.save(employee);
    }
}

এখানে:

  • @Service: Service ক্লাস চিহ্নিত করার জন্য ব্যবহৃত হয়।
  • @Autowired: Spring এর মাধ্যমে EmployeeRepository ইনজেক্ট করা হয়েছে।

7. Controller তৈরি করা (Optional)

যদি আপনি REST API তৈরি করতে চান, তবে Controller ক্লাস তৈরি করতে হবে যা Service থেকে ডেটা সংগ্রহ করবে।

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;

    @GetMapping("/salary/{salary}")
    public List<Employee> getEmployeesBySalary(@PathVariable double salary) {
        return employeeService.getEmployeesBySalary(salary);
    }

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

এখানে:

  • @RestController: Controller ক্লাস চিহ্নিত করার জন্য ব্যবহৃত হয়।
  • @GetMapping: HTTP GET রিকোয়েস্ট হ্যান্ডেল করার জন্য ব্যবহৃত হয়।
  • @PostMapping: HTTP POST রিকোয়েস্ট হ্যান্ডেল করার জন্য ব্যবহৃত হয়।

সারাংশ


Spring Boot এবং JPA Integration ব্যবহার করে ডেটাবেস পরিচালনা করা সহজ হয়ে ওঠে। Spring Data JPA এর মাধ্যমে, আপনি ডেটাবেসে CRUD অপারেশন খুব সহজভাবে করতে পারেন, এবং Entity, Repository, Service, এবং Controller ক্লাসগুলির মধ্যে পরিষ্কার ভেদ তৈরি করে একটি শক্তিশালী অ্যাপ্লিকেশন তৈরি করতে পারেন। Native Queries, Complex Queries, এবং Pagination এর মতো সুবিধা Spring Data JPA এবং JPA এর মাধ্যমে সহজেই ইন্টিগ্রেট করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...