JPA (Java Persistence API) ব্যবহার করার সময়, @Column এনোটেশনটি Java অবজেক্টের ফিল্ড (field) এবং ডেটাবেস টেবিলের কলাম (column) এর মধ্যে সম্পর্ক তৈরি করতে ব্যবহৃত হয়। এটি মূলত একটি ফিল্ডের জন্য একটি নির্দিষ্ট ডেটাবেস কলামকে মানচিত্র (map) করে, যাতে JPA নিশ্চিত করতে পারে যে Java অবজেক্টের ফিল্ডটি ডেটাবেসের ঠিক কোন কলামে সংরক্ষিত হবে।
@Column এনোটেশনটি @Entity শ্রেণীর মধ্যে ব্যবহৃত হয়, এবং এটি ডেটাবেস টেবিলের সাথে অবজেক্ট-রিলেশনাল ম্যাপিং (ORM) করার জন্য গুরুত্বপূর্ণ। JPA এর মধ্যে @Column এনোটেশন প্রয়োগ করে আপনি বিভিন্ন বৈশিষ্ট্য কনফিগার করতে পারেন যেমন কলামের নাম, ডেটা টাইপ, দৈর্ঘ্য, অপরিবর্তনীয়তা (nullable) এবং আরও অনেক কিছু।
@Column এনোটেশন এর সাধারণ ব্যবহার
@Column এনোটেশনটি ফিল্ডের উপরে ব্যবহার করা হয় এবং এটি ডেটাবেস টেবিলের কলামের সাথে Java ফিল্ডকে সম্পর্কিত করে। এর মাধ্যমে ডেটাবেসের কলামের নাম, প্রকার, দৈর্ঘ্য ইত্যাদি নির্ধারণ করা যায়।
সিনট্যাক্স:
@Column(name = "column_name", nullable = false, length = 100, unique = true)
private String fieldName;
এখানে,
name: ডেটাবেস টেবিলের কলামের নাম।nullable: যদি এটিfalseথাকে, তবে ওই কলামেnullমান থাকতে পারবে না।length: স্ট্রিং টাইপ কলামের জন্য দৈর্ঘ্য নির্ধারণ করা হয়।unique: কলামের মান ইউনিক (অন্য সবার থেকে আলাদা) হবে কিনা তা নির্ধারণ করে।
@Column এনোটেশন এর ব্যবহার উদাহরণ
ধরা যাক, আপনার একটি User নামক JPA Entity রয়েছে এবং আপনি সেই অবজেক্টের ফিল্ডগুলো ডেটাবেস টেবিলের কলামে ম্যাপ করতে চান।
@Column এনোটেশন ব্যবহার করে একটি ক্লাসের উদাহরণ
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private Long id;
@Column(name = "first_name", nullable = false, length = 50)
private String firstName;
@Column(name = "last_name", nullable = false, length = 50)
private String lastName;
@Column(name = "email", unique = true, nullable = false)
private String email;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
ব্যাখ্যা:
@Id:idফিল্ডটি ডেটাবেসের টেবিলের প্রাইমারি কী হিসেবে কাজ করবে।@Column(name = "first_name", nullable = false, length = 50):firstNameফিল্ডটি ডেটাবেস টেবিলেরfirst_nameকলামে ম্যাপ হবে। এই কলামেnullমান গ্রহণ করা যাবে না এবং এর দৈর্ঘ্য 50 অক্ষর হবে।@Column(name = "email", unique = true, nullable = false):emailফিল্ডটি ডেটাবেস টেবিলেরemailকলামে ম্যাপ হবে, এই কলামে ইউনিক ভ্যালু থাকতে হবে এবংnullথাকতে পারবে না।
@Column এনোটেশন এর অন্যান্য অপশন
JPA এর @Column এনোটেশনটি আরও কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য সমর্থন করে:
insertable: এটি যদিfalseহয়, তবে JPA ঐ ফিল্ডের জন্য ডেটাবেসে ইনসার্ট অপারেশন করবে না।@Column(insertable = false) private String fieldName;updatable: এটি যদিfalseহয়, তবে JPA ঐ ফিল্ডের জন্য ডেটাবেসে আপডেট অপারেশন করবে না।@Column(updatable = false) private String fieldName;columnDefinition: এটি কলামের জন্য ডেটাবেসে কাস্টম SQL ডিফিনেশন প্রদান করতে ব্যবহৃত হয়। এটি সাধারণত ডেটাবেস স্কিমা কাস্টমাইজেশনের জন্য ব্যবহার করা হয়।@Column(columnDefinition = "VARCHAR(100) DEFAULT 'N/A'") private String fieldName;precisionএবংscale: এই অপশনগুলি সংখ্যা (numeric) কলামগুলির জন্য ব্যবহৃত হয়, যেখানে precision (মোট ডিজিট) এবং scale (ডেসিমাল পয়েন্টের পরে ডিজিট) নির্ধারণ করা হয়।@Column(precision = 10, scale = 2) private BigDecimal price;
@Column এনোটেশন ব্যবহার করার সুবিধা
- স্পষ্ট ম্যাপিং:
@Columnএনোটেশন ব্যবহার করে ডেটাবেস টেবিলের কলামগুলির সাথে Java ক্লাসের ফিল্ডগুলির স্পষ্ট সম্পর্ক তৈরি করা যায়, যা কোডের রিডেবিলিটি উন্নত করে। - ডেটাবেস কাস্টমাইজেশন: ডেটাবেস কলামগুলির জন্য কাস্টম নাম, ডেটা টাইপ, লেন্থ এবং অন্যান্য প্রোপার্টি নির্ধারণ করার সুবিধা প্রদান করে।
- এনোটেশন ভিত্তিক কনফিগারেশন: XML কনফিগারেশন ছাড়াই ডেটাবেস টেবিলের কনফিগারেশন করা যায়, যা Java কোডের মধ্যে সরাসরি অন্তর্ভুক্ত থাকে।
- ফিল্ডের জন্য রেস্ট্রিকশন:
nullable,unique,lengthইত্যাদি অপশন ব্যবহার করে ফিল্ডের জন্য রেস্ট্রিকশন বা শর্ত নির্ধারণ করা যায়।
সারাংশ
@Column এনোটেশন JPA এর একটি গুরুত্বপূর্ণ অংশ যা Java অবজেক্টের ফিল্ডগুলির সাথে ডেটাবেস টেবিলের কলামগুলোকে ম্যাপ করার জন্য ব্যবহৃত হয়। এটি ডেটাবেসের কাঠামো এবং Java কোডের মধ্যে সুসংগত সম্পর্ক তৈরি করতে সাহায্য করে, ফলে ডেটাবেস অপারেশন আরও সহজ, দ্রুত এবং কার্যকরী হয়। @Column এর মাধ্যমে ডেটাবেস কলামের নাম, টাইপ, দৈর্ঘ্য, ইউনিক বা নালযোগ্যতা নির্ধারণ করা যায় এবং এর মাধ্যমে ডেটাবেসের মানচিত্রে স্পষ্টতা আনা যায়।
Read more