Spring ORM-এ @Table এবং @Column অ্যানোটেশন ব্যবহার করে ডাটাবেস টেবিলের সঙ্গে জাভা ক্লাসের ম্যাপিং করা হয়। এগুলো JPA (Java Persistence API) থেকে আসে এবং Hibernate বা JPA প্রোভাইডার ব্যবহারে খুবই কার্যকরী।
@Table এবং @Column কী?
@Table: একটি জাভা ক্লাসকে ডাটাবেস টেবিলের সঙ্গে সংযুক্ত (Map) করতে ব্যবহৃত হয়। এটি টেবিলের নাম ও অন্যান্য বৈশিষ্ট্য নির্ধারণ করে।@Column: ডাটাবেস টেবিলের নির্দিষ্ট একটি কলামের সঙ্গে জাভা ক্লাসের একটি ফিল্ড সংযুক্ত করতে ব্যবহৃত হয়।
Table Mapping: @Table এবং @Column এর ব্যবহার
উদাহরণ: টেবিল ম্যাপিং কনফিগারেশন
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Column;
@Entity
@Table(name = "employees")
public class Employee {
@Id
@Column(name = "employee_id", nullable = false)
private Long id;
@Column(name = "employee_name", length = 100, nullable = false)
private String name;
@Column(name = "department")
private String department;
@Column(name = "salary", columnDefinition = "DECIMAL(10, 2)")
private Double salary;
// Getters and Setters
}
@Table এবং @Column এর ব্যবহার ব্যাখ্যা
@Table এর বৈশিষ্ট্য
name: ডাটাবেস টেবিলের নাম নির্ধারণ করে।schema: স্কিমা স্পেসিফাই করতে ব্যবহৃত হয় (যদি প্রয়োজন হয়)।catalog: ডাটাবেস ক্যাটালগ নির্ধারণ করতে ব্যবহৃত হয়।
উদাহরণ:
@Table(name = "employees", schema = "hr")
@Column এর বৈশিষ্ট্য
name: ডাটাবেস কলামের নাম নির্ধারণ করে।length: স্ট্রিং টাইপের কলামের দৈর্ঘ্য নির্ধারণ করে।nullable: কলামেNULLঅনুমতি দেওয়া হবে কি না।unique: কলামটিকে ইউনিক কনস্ট্রেইন্ট দেয়।columnDefinition: কলামের ডাটাটাইপ নির্ধারণ করে।
উদাহরণ:
@Column(name = "employee_name", length = 100, nullable = false, unique = true)
কাজের প্রবাহ
টেবিল এবং কলাম ম্যাপিং এর ধাপসমূহ
- Entity ডিফাইন করা:
@Entityব্যবহার করে ক্লাসকে Entity হিসেবে চিহ্নিত করা। - টেবিল ম্যাপিং:
@Tableব্যবহার করে ডাটাবেস টেবিলের নাম কনফিগার করা। - কলাম ম্যাপিং:
@Columnব্যবহার করে প্রতিটি ফিল্ডকে কলামের সঙ্গে সংযুক্ত করা। - Hibernate বা JPA Repository তৈরি করা: ডেটাবেস অপারেশন সহজ করার জন্য Spring Data JPA ব্যবহার করা।
উদাহরণ: Spring Boot এ @Table এবং @Column সহ একটি পূর্ণাঙ্গ Entity
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Column;
@Entity
@Table(name = "products")
public class Product {
@Id
@Column(name = "product_id")
private Long id;
@Column(name = "product_name", nullable = false, length = 255)
private String name;
@Column(name = "price", columnDefinition = "DECIMAL(10, 2)")
private Double price;
@Column(name = "description", length = 500)
private String description;
// Getters and Setters
}
Repository এবং Service লেয়ার
Repository তৈরি
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
}
Service লেয়ার
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public List<Product> getAllProducts() {
return productRepository.findAll();
}
public Product saveProduct(Product product) {
return productRepository.save(product);
}
}
@Table এবং @Column এর মাধ্যমে টেবিল এবং কলাম ম্যাপিং অত্যন্ত সহজ হয়, যা ডাটাবেসের সঙ্গে জাভা ক্লাসের সঠিক সংযোগ নিশ্চিত করে।
Content added By
Read more