JdbcTemplate এর ভূমিকা এবং ব্যবহার

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

JdbcTemplate হচ্ছে Spring Framework-এর একটি কোর ক্লাস, যা ডেটাবেস অপারেশনগুলোকে সহজ, দ্রুত, এবং আরও কার্যকরভাবে সম্পাদন করতে ব্যবহৃত হয়। এটি মূলত Java JDBC API-র উপর ভিত্তি করে তৈরি, এবং ডেটাবেসের সাথে কাজ করার সময় বারবার ব্যবহার করা কোড (boilerplate code) অপসারণ করে।


JdbcTemplate এর ভূমিকা

JdbcTemplate ডেটাবেসের সাথে ইন্টারঅ্যাকশন করার জন্য নিম্নলিখিত ভূমিকা পালন করে:

  1. রিসোর্স ম্যানেজমেন্ট সহজ করে:
    • কানেকশন ওপেন, স্টেটমেন্ট প্রিপেয়ার, রিসোর্স ক্লোজ ইত্যাদি ম্যানুয়ালি করার প্রয়োজন হয় না। JdbcTemplate এগুলো স্বয়ংক্রিয়ভাবে পরিচালনা করে।
  2. ব্যতিক্রম (Exception) হ্যান্ডলিং:
    • এটি জাভার SQLException-কে Spring Framework-এর কাস্টম ব্যতিক্রম DataAccessException-এ রূপান্তর করে, যা ব্যতিক্রম হ্যান্ডলিং সহজ করে।
  3. রো (Row) ম্যাপিং সহজ করে:
    • ডেটাবেস থেকে রো (Row) পড়ে জাভা অবজেক্টে রূপান্তর করার জন্য RowMapper ইন্টারফেস প্রদান করে।
  4. ডেটাবেস অপারেশনগুলিকে সহজতর করে:
    • যেমন, SELECT, INSERT, UPDATE, DELETE অপারেশনগুলো সহজেই সম্পন্ন করা যায়।

JdbcTemplate ব্যবহার করার ধাপসমূহ

  1. কনফিগারেশন: JdbcTemplate ব্যবহার করার জন্য প্রথমে একটি DataSource কনফিগার করতে হবে।

    Java-based Configuration:

    @Configuration
    public class AppConfig {
        @Bean
        public DataSource dataSource() {
            DriverManagerDataSource dataSource = new DriverManagerDataSource();
            dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql://localhost:3306/testdb");
            dataSource.setUsername("root");
            dataSource.setPassword("password");
            return dataSource;
        }
    
        @Bean
        public JdbcTemplate jdbcTemplate(DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    }
    
  2. JdbcTemplate ব্যবহার: DataSource ব্যবহার করে একটি JdbcTemplate অবজেক্ট তৈরি করতে হবে এবং এটি দিয়ে ডেটাবেস অপারেশন সম্পন্ন করা যায়।

JdbcTemplate এর গুরুত্বপূর্ণ মেথড এবং উদাহরণ

১. ডেটা সিলেক্ট (SELECT) করার জন্য:

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.util.List;

public class UserDao {
    private JdbcTemplate jdbcTemplate;

    public UserDao(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public List<User> getAllUsers() {
        String sql = "SELECT id, name, email FROM users";
        return jdbcTemplate.query(sql, new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setEmail(rs.getString("email"));
                return user;
            }
        });
    }
}

২. ডেটা ইনসার্ট (INSERT) করার জন্য:

public int addUser(User user) {
    String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
    return jdbcTemplate.update(sql, user.getName(), user.getEmail());
}

৩. ডেটা আপডেট (UPDATE) করার জন্য:

public int updateUser(User user) {
    String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?";
    return jdbcTemplate.update(sql, user.getName(), user.getEmail(), user.getId());
}

৪. ডেটা ডিলিট (DELETE) করার জন্য:

public int deleteUser(int userId) {
    String sql = "DELETE FROM users WHERE id = ?";
    return jdbcTemplate.update(sql, userId);
}

JdbcTemplate এর সুবিধা

  1. কোড পুনরাবৃত্তি এড়ায়: ম্যানুয়াল রিসোর্স ম্যানেজমেন্ট এবং SQL অপারেশন সহজ করে।
  2. রিডেবল কোড: ডেটাবেস অপারেশন সহজ এবং পরিষ্কারভাবে লেখা যায়।
  3. রিসোর্স অপ্টিমাইজেশন: কানেকশন, স্টেটমেন্ট, এবং রিসোর্স ম্যানেজমেন্ট নিজে থেকেই হ্যান্ডেল করে।
  4. সহজ এক্সেপশন হ্যান্ডলিং: SQLException-কে DataAccessException-এ রূপান্তর করে।

JdbcTemplate ব্যবহার সংক্রান্ত চ্যালেঞ্জ

  1. জটিল SQL বা কাস্টম ডেটা ম্যাপিং ক্ষেত্রে জটিলতা বাড়তে পারে।
  2. বড় প্রজেক্টে ORM (যেমন Hibernate) তুলনায় তুলনামূলক কম ব্যবহৃত হয়।

উপসংহার

JdbcTemplate একটি অত্যন্ত কার্যকর টুল, বিশেষ করে যখন ছোট বা মাঝারি আকারের প্রজেক্টে ডেটাবেস অপারেশন সম্পন্ন করতে হয়। এটি ডেভেলপারদের সময় বাঁচায় এবং ডেটাবেস ইন্টিগ্রেশনকে আরও সহজ করে তোলে।

Content added By

JdbcTemplate কি এবং কেন এটি প্রয়োজন?

68
68

JdbcTemplate হল স্প্রিং ফ্রেমওয়ার্কের একটি কেন্দ্রীয় ক্লাস, যা ডেটাবেসের সাথে সংযোগ স্থাপন এবং CRUD (Create, Read, Update, Delete) অপারেশন সম্পাদন করার কাজ সহজ করে। এটি ডেটাবেসের জন্য সাধারণ JDBC অপারেশনগুলির জন্য একটি উচ্চ-স্তরের API প্রদান করে এবং JDBC-এর সাথে যুক্ত বয়লারপ্লেট কোড (যেমন কানেকশন ম্যানেজমেন্ট, স্টেটমেন্ট প্রিপারেশন, এবং এক্সসেপশন হ্যান্ডলিং) থেকে মুক্তি দেয়।


JdbcTemplate-এর প্রয়োজনীয়তা কেন?

জাভা প্রোগ্রামিংয়ে, JDBC ব্যবহার করে ডেটাবেস অ্যাক্সেস করতে গেলে নিচের সমস্যাগুলি দেখা দেয়:

  1. বয়লারপ্লেট কোডের আধিক্য:
    • JDBC দিয়ে ডেটাবেস অ্যাক্সেস করার সময় অনেক ঘন ঘন পুনরাবৃত্তি করা কোড লিখতে হয় (যেমন কানেকশন খোলা এবং বন্ধ করা)।
  2. এক্সসেপশন হ্যান্ডলিং জটিলতা:
    • SQLException হ্যান্ডল করা এবং ডেটাবেস সংক্রান্ত ত্রুটির জন্য যথাযথ বার্তা বের করা বেশ জটিল।
  3. রিসোর্স ম্যানেজমেন্ট:
    • কানেকশন, স্টেটমেন্ট, এবং রেজাল্টসেট বন্ধ করার দায়িত্ব প্রোগ্রামারের থাকে, যা ভুল হলে মেমোরি লিকের কারণ হতে পারে।
  4. কোয়েরি প্রসেসিং জটিলতা:
    • কোয়েরি রেজাল্ট প্রসেস করতে বারবার ResultSet লুপ করতে হয়, যা সময়সাপেক্ষ এবং ক্লান্তিকর।

JdbcTemplate এই সমস্যাগুলির সমাধান প্রদান করে।


JdbcTemplate-এর সুবিধা

  1. বয়লারপ্লেট কোড থেকে মুক্তি:
    • ডেটাবেস কানেকশন খোলা এবং বন্ধ, এক্সসেপশন হ্যান্ডলিং, এবং স্টেটমেন্ট বন্ধ করার কাজ স্বয়ংক্রিয়ভাবে পরিচালিত হয়।
  2. সহজ এবং কার্যকর API:
    • সাধারণ ডেটাবেস অপারেশনের জন্য query, update, এবং অন্যান্য API সরাসরি ব্যবহার করা যায়।
  3. এক্সসেপশন হ্যান্ডলিং সহজতর:
    • DataAccessException ক্লাসের মাধ্যমে ডেটাবেস সম্পর্কিত ত্রুটি হ্যান্ডলিং আরও সহজ হয়।
  4. রিসোর্স ম্যানেজমেন্ট সহজ:
    • নিজে রিসোর্স ম্যানেজ করার প্রয়োজন নেই। JdbcTemplate নিজে এটি স্বয়ংক্রিয়ভাবে করে।
  5. রেজাল্ট প্রসেসিং সহজ:
    • RowMapper, ResultSetExtractor ইত্যাদির মাধ্যমে কোয়েরি রেজাল্ট সহজে প্রসেস করা যায়।

JdbcTemplate-এর ব্যবহার

1. JdbcTemplate সেটআপ:

JdbcTemplate ব্যবহার করার আগে একটি DataSource কনফিগার করতে হবে।

@Configuration
public class AppConfig {
    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/yourdatabase");
        dataSource.setUsername("username");
        dataSource.setPassword("password");
        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

2. JdbcTemplate দিয়ে ডেটাবেস অপারেশন:

(a) Data Insert:

String sql = "INSERT INTO employees (id, name, department) VALUES (?, ?, ?)";
jdbcTemplate.update(sql, 1, "John Doe", "HR");

(b) Data Update:

String sql = "UPDATE employees SET name = ? WHERE id = ?";
jdbcTemplate.update(sql, "Jane Doe", 1);

(c) Data Delete:

String sql = "DELETE FROM employees WHERE id = ?";
jdbcTemplate.update(sql, 1);

(d) Data Query:

String sql = "SELECT * FROM employees WHERE id = ?";
Employee employee = jdbcTemplate.queryForObject(
    sql,
    new Object[]{1},
    new BeanPropertyRowMapper<>(Employee.class)
);

(e) Custom RowMapper ব্যবহার:

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"));
        return employee;
    }
}

// কোয়েরি:
String sql = "SELECT * FROM employees";
List<Employee> employees = jdbcTemplate.query(sql, new EmployeeRowMapper());

উপসংহার

JdbcTemplate ডেটাবেস অ্যাক্সেস এবং অপারেশনকে অত্যন্ত সহজ এবং কার্যকর করে। এটি ডেভেলপারদের সময় বাঁচায়, বাগের সম্ভাবনা কমায় এবং ডেটাবেস কোড আরও পরিষ্কার এবং সহজবোধ্য করে। যদি আপনি স্প্রিং ফ্রেমওয়ার্ক ব্যবহার করেন এবং সরাসরি JDBC দিয়ে কাজ করতে চান, তবে JdbcTemplate একটি আদর্শ সমাধান।

Content added By

JdbcTemplate এর মৌলিক ধারণা এবং কাজের প্রক্রিয়া

78
78

JdbcTemplate এর মৌলিক ধারণা

JdbcTemplate হলো স্প্রিং ফ্রেমওয়ার্কের একটি ক্লাস, যা JDBC (Java Database Connectivity)-এর মাধ্যমে ডাটাবেস অপারেশন (CRUD) সহজ এবং কার্যকর করে তোলে। এটি JDBC API-এর জটিলতা যেমন রিসোর্স ম্যানেজমেন্ট, SQL এক্সিকিউশন, এবং এক্সেপশন হ্যান্ডলিং সরিয়ে একটি সহজ ইন্টারফেস প্রদান করে।

মূল কাজ:

  • SQL স্টেটমেন্ট তৈরি এবং এক্সিকিউশন।
  • প্যারামিটারাইজড কুইয়ারি সমর্থন।
  • রিসোর্স ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে পরিচালনা করা।
  • রেজাল্টসেট প্রসেসিং সহজ করা।

JdbcTemplate এর কাজের প্রক্রিয়া

১. ডেটাসোর্স কনফিগারেশন

JdbcTemplate কাজ করার জন্য প্রথমে একটি DataSource কনফিগার করতে হয়, যা ডাটাবেসের সাথে কানেকশন স্থাপন করে।

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
    dataSource.setUsername("root");
    dataSource.setPassword("password");
    return dataSource;
}

২. JdbcTemplate ইনস্ট্যান্স তৈরি

DataSource থেকে JdbcTemplate তৈরি করতে হবে।

@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

JdbcTemplate এর প্রধান অপারেশনসমূহ

১. ডেটা ইনসার্ট করা (Insert Data)

ডাটাবেসে ডেটা যোগ করার জন্য update মেথড ব্যবহার করা হয়।

public void insertEmployee(int id, String name, String department) {
    String sql = "INSERT INTO employee (id, name, department) VALUES (?, ?, ?)";
    jdbcTemplate.update(sql, id, name, department);
}

২. ডেটা আপডেট করা (Update Data)

ডাটাবেসের ডেটা আপডেট করার জন্যও update মেথড ব্যবহার করা হয়।

public void updateEmployeeDepartment(int id, String newDepartment) {
    String sql = "UPDATE employee SET department = ? WHERE id = ?";
    jdbcTemplate.update(sql, newDepartment, id);
}

৩. ডেটা মুছে ফেলা (Delete Data)

ডেটা ডিলিট করার জন্য update মেথড ব্যবহার করা হয়।

public void deleteEmployeeById(int id) {
    String sql = "DELETE FROM employee WHERE id = ?";
    jdbcTemplate.update(sql, id);
}

৪. ডেটা রিট্রিভ করা (Query for Single Row)

ডেটাবেস থেকে একটি নির্দিষ্ট রেকর্ড ফেচ করতে queryForObject ব্যবহার করা হয়।

public String getEmployeeNameById(int id) {
    String sql = "SELECT name FROM employee WHERE id = ?";
    return jdbcTemplate.queryForObject(sql, new Object[]{id}, String.class);
}

৫. মাল্টিপল রেকর্ড রিট্রিভ করা (Query for Multiple Rows)

ডাটাবেস থেকে একাধিক রেকর্ড রিট্রিভ করতে query এবং RowMapper ব্যবহার করা হয়।

public List<Employee> getAllEmployees() {
    String sql = "SELECT * FROM employee";
    return jdbcTemplate.query(sql, (rs, rowNum) -> 
        new Employee(
            rs.getInt("id"),
            rs.getString("name"),
            rs.getString("department")
        )
    );
}

JdbcTemplate এর মূল মেথডসমূহ

মেথডকাজ
update()INSERT, UPDATE, বা DELETE কুইয়ারি এক্সিকিউট করে।
queryForObject()একটি সিঙ্গেল রো বা ভ্যালু রিটার্ন করে।
query()মাল্টিপল রো প্রসেস করে এবং একটি লিস্ট রিটার্ন করে।
batchUpdate()মাল্টিপল SQL স্টেটমেন্ট একসাথে এক্সিকিউট করে।
execute()কাস্টম SQL স্টেটমেন্ট এক্সিকিউট করতে ব্যবহার করা হয়।

JdbcTemplate ব্যবহার করার সময় সুবিধা

  1. কম কোড:
    • বয়লারপ্লেট কোড যেমন Connection খোলা এবং বন্ধ করা, PreparedStatement তৈরি করা ইত্যাদি সরিয়ে দেয়।
  2. রিসোর্স ম্যানেজমেন্ট:
    • স্বয়ংক্রিয়ভাবে কানেকশন বন্ধ করে এবং রিসোর্স মুক্ত করে।
  3. এক্সেপশন হ্যান্ডলিং:
    • SQLException কে স্প্রিং এর কাস্টম এক্সেপশন (DataAccessException) এ রূপান্তর করে।
  4. ফ্লেক্সিবিলিটি:
    • কাস্টম কুইয়ারি এবং RowMapper ইন্টারফেস ব্যবহার করে ডেটা প্রসেসিং আরও ফ্লেক্সিবল করে।

JdbcTemplate এর সীমাবদ্ধতা

  • বড় এবং জটিল অ্যাপ্লিকেশনগুলিতে ORM টুল যেমন Hibernate বা JPA প্রয়োজন হতে পারে।
  • SQL কুইয়ারি ম্যানেজমেন্ট সম্পূর্ণরূপে ডেভেলপারের উপর নির্ভরশীল।

JdbcTemplate স্প্রিং জেডিবিসি ব্যবহারকারীদের জন্য একটি অত্যন্ত শক্তিশালী এবং সহজ সমাধান, বিশেষ করে যদি আপনি হালকা ডাটাবেস অপারেশন করতে চান।

Content added By

JdbcTemplate দিয়ে CRUD অপারেশন পরিচালনা

75
75

স্প্রিং জেডিবিসি-র মাধ্যমে JdbcTemplate ব্যবহার করে CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করা খুবই সহজ। এখানে প্রতিটি অপারেশনের জন্য ধাপে ধাপে উদাহরণ দেওয়া হলো।


প্রয়োজনীয় সেটআপ

  1. ডিপেন্ডেন্সি সংযোজন:
    Maven-এ স্প্রিং জেডিবিসি এবং ডাটাবেস ড্রাইভার যোগ করুন।
    (উদাহরণস্বরূপ, MySQL-এর জন্য)

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.x.x</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.x.x</version>
    </dependency>
    
  2. ডাটাসোর্স কনফিগারেশন:

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
        dataSource.setUsername("your_username");
        dataSource.setPassword("your_password");
        return dataSource;
    }
    
  3. JdbcTemplate সেটআপ:

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
    

CRUD অপারেশন উদাহরণ

1. Create (Insert Data)

একটি নতুন রেকর্ড সন্নিবেশ করা।

public void addUser(String name, String email) {
    String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
    jdbcTemplate.update(sql, name, email);
}

ব্যবহার:

addUser("John Doe", "john@example.com");

2. Read (Retrieve Data)

সব রেকর্ড পড়া:
public List<User> getAllUsers() {
    String sql = "SELECT * FROM users";
    return jdbcTemplate.query(sql, (rs, rowNum) -> new User(
        rs.getInt("id"),
        rs.getString("name"),
        rs.getString("email")
    ));
}
একটি নির্দিষ্ট রেকর্ড পড়া:
public User getUserById(int id) {
    String sql = "SELECT * FROM users WHERE id = ?";
    return jdbcTemplate.queryForObject(sql, new Object[]{id}, (rs, rowNum) -> new User(
        rs.getInt("id"),
        rs.getString("name"),
        rs.getString("email")
    ));
}

ব্যবহার:

User user = getUserById(1);
System.out.println(user.getName());

3. Update (Update Data)

একটি রেকর্ড আপডেট করা।

public void updateUser(int id, String name, String email) {
    String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?";
    jdbcTemplate.update(sql, name, email, id);
}

ব্যবহার:

updateUser(1, "John Smith", "johnsmith@example.com");

4. Delete (Remove Data)

একটি রেকর্ড মুছে ফেলা।

public void deleteUser(int id) {
    String sql = "DELETE FROM users WHERE id = ?";
    jdbcTemplate.update(sql, id);
}

ব্যবহার:

deleteUser(1);

সম্পূর্ণ উদাহরণ

User Class:
public class User {
    private int id;
    private String name;
    private String email;

    // Constructor
    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    // 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 getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
Service Class:
@Service
public class UserService {
    private final JdbcTemplate jdbcTemplate;

    public UserService(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    // CRUD methods here
}

ট্রানজেকশন ম্যানেজমেন্ট (ঐচ্ছিক):

স্প্রিং ট্রানজেকশন ম্যানেজমেন্ট যোগ করতে @Transactional অ্যানোটেশন ব্যবহার করতে পারেন।

@Transactional
public void performMultipleOperations() {
    addUser("Alice", "alice@example.com");
    updateUser(2, "Bob", "bob@example.com");
    deleteUser(3);
}

উপসংহার:

JdbcTemplate ব্যবহার করে CRUD অপারেশন খুব দ্রুত এবং সহজে সম্পন্ন করা যায়। এটি বিশেষত তখন কার্যকর, যখন Hibernate বা JPA-এর মতো ভারী ORM-এর প্রয়োজন নেই।

Content added By

উদাহরণ সহ JdbcTemplate এর ব্যবহার

74
74

JdbcTemplate হল Spring JDBC-এর একটি অত্যন্ত গুরুত্বপূর্ণ ক্লাস, যা ডাটাবেস অ্যাক্সেস সহজতর করে। এটি SQL অপারেশন (CRUD: Create, Read, Update, Delete) সম্পাদনের জন্য ব্যবহৃত হয়।

JdbcTemplate-এর মাধ্যমে আপনি ডাটাবেসের সাথে সরাসরি ইন্টারঅ্যাক্ট করতে পারেন, যেমন: ডেটা রিড, ইনসার্ট, আপডেট, ডিলিট করা। এটি JDBC-এর জটিল অংশগুলিকে (যেমন কানেকশন ম্যানেজমেন্ট, রিসোর্স ক্লোজিং ইত্যাদি) সরলীকৃত করে।


JdbcTemplate সেটআপ:

Maven ডিপেনডেন্সি:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.10</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.27</version>
</dependency>

DataSource কনফিগার করা:

import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
    dataSource.setUsername("root");
    dataSource.setPassword("password");
    return dataSource;
}

JdbcTemplate বীন তৈরি:

import org.springframework.jdbc.core.JdbcTemplate;

@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

JdbcTemplate-এর মাধ্যমে CRUD অপারেশন

উদাহরণ: User Table

ধরি, আমাদের একটি টেবিল রয়েছে যার নাম users এবং এর কাঠামো নিচের মতো:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

1. ডেটা যোগ করা (Insert Data):

String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
jdbcTemplate.update(sql, "John Doe", "john.doe@example.com");
System.out.println("User added successfully!");

2. ডাটাবেস থেকে ডেটা পড়া (Read Data):

একক রেকর্ড পড়া:
String sql = "SELECT name FROM users WHERE id = ?";
String name = jdbcTemplate.queryForObject(sql, new Object[]{1}, String.class);
System.out.println("User Name: " + name);
একাধিক রেকর্ড পড়া:
String sql = "SELECT * FROM users";
List<User> users = jdbcTemplate.query(sql, (rs, rowNum) -> {
    User user = new User();
    user.setId(rs.getInt("id"));
    user.setName(rs.getString("name"));
    user.setEmail(rs.getString("email"));
    return user;
});

for (User user : users) {
    System.out.println(user);
}

3. ডেটা আপডেট করা (Update Data):

String sql = "UPDATE users SET name = ? WHERE id = ?";
jdbcTemplate.update(sql, "Jane Doe", 1);
System.out.println("User updated successfully!");

4. ডেটা মুছে ফেলা (Delete Data):

String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate.update(sql, 1);
System.out.println("User deleted successfully!");

উন্নত উদাহরণ: NamedParameterJdbcTemplate ব্যবহার

NamedParameterJdbcTemplate ব্যবহার করলে নামযুক্ত প্যারামিটার ব্যবহার করা যায়, যা কোডের পাঠযোগ্যতা বাড়ায়।

NamedParameterJdbcTemplate সেটআপ:

import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(DataSource dataSource) {
    return new NamedParameterJdbcTemplate(dataSource);
}

উদাহরণ:

String sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
Map<String, Object> params = new HashMap<>();
params.put("name", "Alice");
params.put("email", "alice@example.com");

namedParameterJdbcTemplate.update(sql, params);
System.out.println("User added successfully using NamedParameterJdbcTemplate!");

JdbcTemplate-এর সাথে RowMapper ব্যবহার:

RowMapper ডাটাবেস রেকর্ড থেকে অবজেক্ট তৈরি করতে সাহায্য করে।

উদাহরণ:

String sql = "SELECT * FROM users";
List<User> users = jdbcTemplate.query(sql, new RowMapper<User>() {
    @Override
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        User user = new User();
        user.setId(rs.getInt("id"));
        user.setName(rs.getString("name"));
        user.setEmail(rs.getString("email"));
        return user;
    }
});

for (User user : users) {
    System.out.println(user);
}

User ক্লাস উদাহরণ:

public class User {
    private int id;
    private String name;
    private String email;

    // 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 getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", email=" + email + "]";
    }
}

উপসংহার:

Spring JDBC-এর JdbcTemplate ক্লাস ডাটাবেস অ্যাক্সেসকে সহজ, দ্রুত এবং কার্যকর করে তোলে। এটি ডেভেলপারদের কাজের সময় বাঁচায় এবং কোডকে আরও পরিচ্ছন্ন এবং মেইনটেনেবল করে। ছোট বা বড় যেকোনো প্রজেক্টে এটি একটি আদর্শ সমাধান।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion