Custom RowMapper তৈরি করা

Spring JDBC এ RowMapper এবং BeanPropertyRowMapper - স্প্রিং জেডিবিসি (Spring JDBC) - Java Technologies

287

RowMapper ইন্টারফেসটি স্প্রিং JDBC-তে একটি শক্তিশালী টুল যা ডাটাবেস থেকে প্রাপ্ত ResultSet-এর প্রতিটি রো (row) ম্যাপ করে জাভা অবজেক্টে রূপান্তরিত করতে ব্যবহৃত হয়। আপনি যখন ডেটাবেস থেকে কাস্টম অবজেক্ট তৈরি করতে চান, তখন RowMapper-এর সাহায্যে একটি কাস্টম ম্যাপিং লজিক তৈরি করা হয়।


Custom RowMapper কেন প্রয়োজন?

  1. কাস্টম অবজেক্ট তৈরি করা:
    • আপনি যখন ডাটাবেস থেকে জাভা ক্লাসে ডেটা ম্যাপ করতে চান।
  2. কাস্টম লজিক প্রয়োগ করা:
    • যখন রো-এর ডেটা প্রসেস করার জন্য বিশেষ কোনো লজিক প্রয়োজন।
  3. বহু কলাম ম্যাপিং সহজ করা:
    • একটি জটিল SQL রেজাল্টকে সরাসরি আপনার জাভা অবজেক্টের সাথে যুক্ত করতে সাহায্য করে।

Custom RowMapper তৈরির ধাপ

  1. RowMapper ইন্টারফেস ইমপ্লিমেন্ট করা:
    • mapRow মেথড ওভাররাইড করে ম্যাপিং লজিক লিখতে হবে।
  2. প্রত্যেক রেকর্ড প্রসেস করা:
    • ResultSet থেকে ডেটা নিয়ে জাভা অবজেক্ট তৈরি করতে হবে।

Custom RowMapper উদাহরণ

1. ডাটাবেস টেবিল উদাহরণ

ধরা যাক, আমাদের একটি employees নামের টেবিল আছে।
টেবিলের স্ট্রাকচার:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    department VARCHAR(50),
    salary DECIMAL(10, 2)
);

2. Employee ক্লাস

public class Employee {
    private int id;
    private String name;
    private String department;
    private double salary;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

3. Custom RowMapper তৈরি করা

import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;

public class EmployeeRowMapper implements RowMapper<Employee> {
    @Override
    public Employee mapRow(ResultSet rs, int rowNum) throws SQLException {
        Employee employee = new Employee();
        employee.setId(rs.getInt("id"));
        employee.setName(rs.getString("name"));
        employee.setDepartment(rs.getString("department"));
        employee.setSalary(rs.getDouble("salary"));
        return employee;
    }
}

4. JdbcTemplate দিয়ে Custom RowMapper ব্যবহার

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class EmployeeDAO {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<Employee> getAllEmployees() {
        String sql = "SELECT * FROM employees";
        return jdbcTemplate.query(sql, new EmployeeRowMapper());
    }
}

5. কাস্টম কোয়েরি দিয়ে ব্যবহার

আপনি চাইলে ফিল্টার করা ডেটা আনতে পারেন:

public Employee getEmployeeById(int id) {
    String sql = "SELECT * FROM employees WHERE id = ?";
    return jdbcTemplate.queryForObject(sql, new Object[]{id}, new EmployeeRowMapper());
}

Custom RowMapper-এর সুবিধা

  1. Reusable Logic:
    • একবার তৈরি করলে বিভিন্ন DAO বা সার্ভিস ক্লাসে এটি পুনরায় ব্যবহার করা যায়।
  2. কোড ক্লিন রাখা:
    • জটিল ResultSet প্রসেসিং লজিক সহজ করে এবং কোডের পড়তে সহজ হয়।
  3. Custom Mapping:
    • ডেটাবেস এবং জাভা অবজেক্টের মধ্যে পার্থক্য সহজে পরিচালনা করা যায়।

উপসংহার

RowMapper স্প্রিং JDBC-তে একটি গুরুত্বপূর্ণ টুল যা ডেটা ম্যাপিংকে সহজ এবং কার্যকর করে তোলে। কাস্টম RowMapper ব্যবহার করে আপনি আপনার ডেটাবেস টেবিল এবং জাভা অবজেক্টের মধ্যে সম্পর্ক সুন্দরভাবে পরিচালনা করতে পারবেন। এটি কোড ক্লিন রাখার পাশাপাশি আপনার অ্যাপ্লিকেশনকে আরও মডুলার এবং পুনঃব্যবহারযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...