Primary Key এবং Auto Increment Field এর ধারণা
Primary Key (প্রাথমিক কী): ডেটাবেসের একটি টেবিলের মধ্যে প্রতিটি রেকর্ড বা রোকে ইউনিকভাবে শনাক্ত করতে Primary Key ব্যবহৃত হয়। এটি একটি কলাম বা কলাম সমষ্টি যা এককভাবে প্রতিটি রেকর্ডকে অন্য রেকর্ডের থেকে আলাদা করে।
Auto Increment Field: এটি একটি ডেটাবেস ফিচার, যা একটি টেবিলের প্রাথমিক কী বা অন্য কোনো কলামের মান অটোমেটিক্যালি বাড়িয়ে দেয়। সাধারণত, এটি Integer বা Long টাইপের ফিল্ড হিসেবে ব্যবহার করা হয় এবং এতে ডেটাবেস নিজেই নতুন রেকর্ড তৈরি করার সময় মান বাড়িয়ে দেয়।
স্প্রিং বুট জেপিএ (Spring Boot JPA) ব্যবহার করার সময়, Primary Key এবং Auto Increment ফিল্ড তৈরি করতে @Id এবং @GeneratedValue অ্যানোটেশন ব্যবহার করা হয়।
Primary Key এবং Auto Increment Field তৈরি করার জন্য JPA Configuration
১. Entity Class তৈরি করা
প্রথমে, একটি Entity class তৈরি করতে হবে। Entity class হচ্ছে সেই জাভা ক্লাস যা ডেটাবেস টেবিলের সঙ্গে সম্পর্কিত থাকে।
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // Auto Increment
private Long id;
private String name;
private int age;
// Getters and Setters
}
ব্যাখ্যা:
@Entity: এই অ্যানোটেশনটি নির্দেশ করে যে এই ক্লাসটি একটি JPA Entity যা ডেটাবেস টেবিলের সাথে সম্পর্কিত।@Id: এটি প্রাথমিক কী (Primary Key) হিসেবে মার্ক করে।@GeneratedValue(strategy = GenerationType.IDENTITY): এই অ্যানোটেশনটি Auto Increment ফিল্ড তৈরি করে।GenerationType.IDENTITYডেটাবেসে একটি কলামের মান অটোমেটিক্যালি বাড়িয়ে দেয়, সাধারণত এটি MySQL বা PostgreSQL এর মতো ডেটাবেসে কাজ করে।
GenerationType.IDENTITY এর অর্থ হলো ডেটাবেসের নিজস্ব অটোমেটিক ইনক্রিমেন্ট সিস্টেম ব্যবহার করা। ডেটাবেসে একটি নতুন রেকর্ড ইনসার্ট করার সময়, id ফিল্ডের মান অটোমেটিক্যালি বাড়ানো হবে।
২. Repository Interface তৈরি করা
JPA Repository তৈরি করার জন্য, JpaRepository ইন্টারফেস ব্যবহার করা হয়, যা স্প্রিং ডেটা জেপিএর একটি প্রধান অংশ। এটি ডেটাবেসের CRUD অপারেশনগুলির জন্য প্রস্তুত।
import org.springframework.data.jpa.repository.JpaRepository;
public interface PersonRepository extends JpaRepository<Person, Long> {
// Custom query methods can be added here if needed
}
ব্যাখ্যা:
JpaRepository: এটি স্প্রিং ডেটা জেপিএ এর একটি ইন্টারফেস, যা ডেটাবেসের জন্য সহজে CRUD অপারেশন করতে সাহায্য করে। এখানেPersonহলো Entity ক্লাস এবংLongহলো প্রাথমিক কী (Primary Key) এর টাইপ।
৩. Spring Boot Application Class
স্প্রিং বুট অ্যাপ্লিকেশন ক্লাস তৈরি করা যেখানে PersonRepository ইনজেক্ট করা হবে এবং এর মাধ্যমে ডেটাবেসের অপারেশন করা হবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootJpaApplication implements CommandLineRunner {
@Autowired
private PersonRepository personRepository;
public static void main(String[] args) {
SpringApplication.run(SpringBootJpaApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
// Creating new Person entity
Person person = new Person();
person.setName("John Doe");
person.setAge(30);
// Saving the Person entity to the database
personRepository.save(person);
System.out.println("Person saved: " + person.getName() + " with ID: " + person.getId());
}
}
ব্যাখ্যা:
@Autowired: এটিPersonRepositoryবীনের ইনজেকশন নিশ্চিত করে, যাতেpersonRepository.save(person)মাধ্যমেPersonEntity ডেটাবেসে সেভ করা যায়।CommandLineRunner: স্প্রিং বুট অ্যাপ্লিকেশন চালানোর পরেrun()মেথডটি কল হয়, যেখানে আমরা একটি নতুনPersonঅবজেক্ট তৈরি করি এবং এটি ডেটাবেসে সেভ করি।
৪. application.properties কনফিগারেশন
স্প্রিং বুট অ্যাপ্লিকেশনে ডেটাবেস কনফিগারেশন প্রয়োজন। application.properties ফাইলে নিম্নলিখিত কনফিগারেশন যোগ করুন:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
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.datasource.url: ডেটাবেসের URL।spring.datasource.username: ডেটাবেস ইউজারনেম।spring.datasource.password: ডেটাবেস পাসওয়ার্ড।spring.jpa.hibernate.ddl-auto: এটি স্প্রিং হাইবারনেটের মাধ্যমে ডেটাবেসের স্কিমা আপডেট করার কৌশল (যেমন,update,create,create-drop) নির্ধারণ করে।spring.jpa.show-sql: SQL কোয়েরি দেখানোর জন্যtrueসেট করা হয়।
সারাংশ
স্প্রিং বুট জেপিএ (Spring Boot JPA) ব্যবহারে, Primary Key এবং Auto Increment ফিল্ড তৈরি করা খুব সহজ। @Id অ্যানোটেশন প্রাথমিক কী হিসেবে কাজ করে এবং @GeneratedValue(strategy = GenerationType.IDENTITY) অ্যানোটেশনটি ডেটাবেসে অটোমেটিক ইনক্রিমেন্ট ফিচারটি সক্রিয় করে। এর মাধ্যমে, স্প্রিং বুট জেপিএ ডেটাবেসে রেকর্ড ইনসার্ট করার সময় নতুন রেকর্ডের প্রাথমিক কী নিজেই বৃদ্ধি করে। এই পদ্ধতিটি ডেটাবেসের প্রতি ব্যবহারের নমনীয়তা এবং পারফরম্যান্স উন্নত করতে সাহায্য করে।
Read more