Vaadin ফ্রেমওয়ার্কে ডাটাবেস CRUD (Create, Read, Update, Delete) অপারেশনস ইমপ্লিমেন্ট করা একটি সাধারণ প্রক্রিয়া যা ডেটাবেসে ডেটা ম্যানেজমেন্টের জন্য প্রয়োজনীয়। Vaadin এর সাথে Java এবং JPA (Java Persistence API) ব্যবহার করে খুব সহজেই CRUD অপারেশন করা সম্ভব। এখানে আমরা দেখব কীভাবে একটি সাধারণ CRUD অপারেশনকে Vaadin ফ্রেমওয়ার্কে ইমপ্লিমেন্ট করা যায়।
CRUD অপারেশনস কী?
CRUD হল চারটি মৌলিক অপারেশন যা ডেটাবেস বা অন্য কোনো ডেটা স্টোরেজ সিস্টেমে ডেটা পরিচালনা করতে ব্যবহৃত হয়:
- Create: নতুন রেকর্ড তৈরি করা।
- Read: ডেটা পড়া (ডেটা অনুসন্ধান বা দেখার কাজ)।
- Update: বিদ্যমান রেকর্ড আপডেট করা।
- Delete: রেকর্ড মুছে ফেলা।
Vaadin এ CRUD অপারেশনস ইমপ্লিমেন্ট করা
Vaadin এর মাধ্যমে CRUD অপারেশন ইমপ্লিমেন্ট করার জন্য সাধারণত কিছু মৌলিক উপাদান প্রয়োজন হয়, যেমন:
- ডাটাবেস: একটি ডাটাবেস যেমন H2, MySQL বা PostgreSQL।
- JPA (Java Persistence API): ডেটাবেসের সাথে Java ক্লাসগুলোর ম্যাপিং।
- Vaadin UI কম্পোনেন্টস: গ্রিড, ফর্ম, বাটন ইত্যাদি।
1. ডাটাবেস কনফিগারেশন এবং JPA Entity তৈরি করা
প্রথমে আপনাকে একটি JPA Entity তৈরি করতে হবে, যা ডেটাবেস টেবিলের সাথে সম্পর্কিত হবে। নিচে একটি উদাহরণ দেওয়া হলো:
Entity Class: Person
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getter and Setter methods
public Person() {}
public Person(String name, String email) {
this.name = name;
this.email = email;
}
}
এখানে Person একটি JPA Entity, যা ডেটাবেসে person টেবিলের সাথে সংযুক্ত থাকবে।
2. ডাটাবেস রেপোজিটরি তৈরি করা
JPA এর মাধ্যমে ডেটাবেসের সঙ্গে ইন্টারঅ্যাক্ট করার জন্য একটি রেপোজিটরি (Repository) তৈরি করতে হয়। আমরা JpaRepository ব্যবহার করে একটি সহজ রেপোজিটরি তৈরি করব:
Repository Interface: PersonRepository
@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {
List<Person> findByName(String name);
}
এখানে JpaRepository ব্যবহার করে Person Entity এর জন্য CRUD অপারেশন করা যাবে। findByName একটি কাস্টম মেথড যা নাম অনুসারে Person খুঁজে পাবে।
3. Vaadin UI কম্পোনেন্টস তৈরি করা
Vaadin UI তৈরি করার জন্য আপনাকে Grid (ডেটা ডিসপ্লে করার জন্য) এবং Form (ডেটা ইনপুট এবং আপডেট করার জন্য) কম্পোনেন্টস ব্যবহার করতে হবে। এছাড়া, Button কম্পোনেন্ট দিয়ে Create, Update, এবং Delete অপারেশন চালানো যাবে।
UI Class: PersonView
@Route("person")
public class PersonView extends VerticalLayout {
private final PersonRepository personRepository;
private final Grid<Person> grid;
private final FormLayout form;
private final TextField nameField;
private final TextField emailField;
private final Button saveButton;
private final Button deleteButton;
public PersonView(PersonRepository personRepository) {
this.personRepository = personRepository;
this.grid = new Grid<>(Person.class);
this.form = new FormLayout();
this.nameField = new TextField("Name");
this.emailField = new TextField("Email");
this.saveButton = new Button("Save", e -> savePerson());
this.deleteButton = new Button("Delete", e -> deletePerson());
form.add(nameField, emailField, saveButton, deleteButton);
add(form, grid);
grid.setColumns("id", "name", "email");
grid.setItems(personRepository.findAll());
grid.addItemClickListener(event -> editPerson(event.getItem()));
}
private void savePerson() {
Person person = new Person(nameField.getValue(), emailField.getValue());
personRepository.save(person);
grid.setItems(personRepository.findAll()); // Refresh grid
}
private void deletePerson() {
Person selectedPerson = grid.asSingleSelect().getValue();
if (selectedPerson != null) {
personRepository.delete(selectedPerson);
grid.setItems(personRepository.findAll()); // Refresh grid
}
}
private void editPerson(Person person) {
nameField.setValue(person.getName());
emailField.setValue(person.getEmail());
deleteButton.setVisible(true); // Show delete button
}
}
কোডের ব্যাখ্যা:
- Grid:
Personটেবিলের সমস্ত রেকর্ড প্রদর্শন করতেGridব্যবহার করা হয়েছে। - FormLayout:
nameFieldএবংemailFieldইনপুট ফিল্ডের মাধ্যমে নতুনPersonতৈরি বা বিদ্যমানPersonআপডেট করার জন্য একটি ফর্ম। - Buttons:
Saveবাটন নতুনPersonতৈরি করার জন্য এবংDeleteবাটন নির্বাচিতPersonমুছে ফেলার জন্য। - SavePerson: নতুন
Personতৈরি করে এবংpersonRepository.save()দিয়ে ডাটাবেসে সেভ করে। - DeletePerson: নির্বাচিত
Personকে মুছে ফেলে এবংpersonRepository.delete()দিয়ে ডাটাবেস থেকে রেকর্ড মুছে ফেলে।
4. অ্যাপ্লিকেশন কনফিগারেশন এবং চালু করা
এখন, আপনি আপনার অ্যাপ্লিকেশন চালু করতে পারেন এবং @SpringBootApplication কনফিগারেশন দিয়ে অ্যাপ্লিকেশন রান করতে পারেন।
Main Application Class: Application.java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
সারাংশ
Vaadin এর মাধ্যমে CRUD অপারেশন ইমপ্লিমেন্ট করতে, আপনি ডেটাবেসের সাথে সংযোগ স্থাপন করতে JPA ব্যবহার করতে পারেন এবং UI অংশে Grid, Form, এবং Button ব্যবহার করে ডেটা ডিসপ্লে এবং ম্যানেজমেন্টের কাজ করতে পারেন। CRUD অপারেশনগুলির জন্য প্রয়োজনীয় ডেটাবেস রেপোজিটরি এবং জাভা কোড সহ আপনি সহজেই ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন যা ডাটাবেসে ডেটা সঞ্চালন করতে সক্ষম।
Read more