স্প্রিং ওআরএম (Spring Object Relational Mapping) হল স্প্রিং ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ মডিউল, যা Hibernate, JPA (Java Persistence API) এবং অন্যান্য ORM টুলের সঙ্গে একীভূত হতে সাহায্য করে। এটি ডেটাবেস অপারেশন সহজ ও দক্ষ করে এবং Boilerplate কোড কমিয়ে দেয়।
স্প্রিং ORM মডিউল বিশেষত Spring Framework এবং Spring Boot এ ব্যবহৃত হয়, যেখানে ডেটাবেস-সংক্রান্ত কাজগুলো আরো দ্রুত এবং সহজভাবে করা যায়।
Spring ORM এর প্রধান ফিচারসমূহ
- ইন্টিগ্রেশন সুবিধা: Hibernate, JPA, JDO, এবং Apache OJB-এর মতো ORM টুলের সঙ্গে সহজ ইন্টিগ্রেশন।
- Declarative Transaction Management: অ্যানোটেশন-ভিত্তিক ট্রান্স্যাকশন ম্যানেজমেন্ট।
- Boilerplate কোড কমানো: DAO লেয়ারের জন্য অত্যন্ত কম কোড লিখে ডেটাবেস অপারেশন।
- Exception Translation: Hibernate বা JPA এর Exception গুলো Spring DataAccessException-এ রূপান্তর করে।
Spring Boot এবং Spring Framework-এ ORM কনফিগারেশন
Hibernate এর সাথে Spring ORM কনফিগারেশন
Dependencies যোগ করা
Spring Boot প্রোজেক্টে Maven বা Gradle ব্যবহার করে Hibernate এবং JPA এর জন্য নিচের ডিপেন্ডেন্সি যোগ করতে হয়:
Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Gradle:
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
অ্যাপ্লিকেশন প্রোপার্টিজ (application.properties) কনফিগারেশন
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
Hibernate Entity তৈরি
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String department;
// Getters and Setters
}
Spring Data JPA Repository
import org.springframework.data.jpa.repository.JpaRepository;
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}
সেবাসেবা বা সার্ভিস লেয়ার
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> getAllEmployees() {
return employeeRepository.findAll();
}
public Employee saveEmployee(Employee employee) {
return employeeRepository.save(employee);
}
}
কন্ট্রোলার লেয়ার
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
public List<Employee> getAllEmployees() {
return employeeService.getAllEmployees();
}
@PostMapping
public Employee createEmployee(@RequestBody Employee employee) {
return employeeService.saveEmployee(employee);
}
}
Spring Framework-এ ORM কনফিগারেশন
Spring Framework-এ XML বা Java Configuration দিয়ে ORM সেটআপ করা হয়।
Hibernate Configuration (Java-Based)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import javax.sql.DataSource;
@Configuration
public class HibernateConfig {
@Bean
public LocalSessionFactoryBean sessionFactory(DataSource dataSource) {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setPackagesToScan("com.example.model");
return sessionFactory;
}
}
Spring ORM ডেটাবেস এবং জাভার মধ্যে এক মসৃণ সংযোগ স্থাপন করে, যার ফলে ডেভেলপারদের কোড সহজ ও মেইনটেইনেবল হয়।
Read more