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 ব্যবহার করার সময় সুবিধা
- কম কোড:
- বয়লারপ্লেট কোড যেমন
Connectionখোলা এবং বন্ধ করা,PreparedStatementতৈরি করা ইত্যাদি সরিয়ে দেয়।
- বয়লারপ্লেট কোড যেমন
- রিসোর্স ম্যানেজমেন্ট:
- স্বয়ংক্রিয়ভাবে কানেকশন বন্ধ করে এবং রিসোর্স মুক্ত করে।
- এক্সেপশন হ্যান্ডলিং:
SQLExceptionকে স্প্রিং এর কাস্টম এক্সেপশন (DataAccessException) এ রূপান্তর করে।
- ফ্লেক্সিবিলিটি:
- কাস্টম কুইয়ারি এবং
RowMapperইন্টারফেস ব্যবহার করে ডেটা প্রসেসিং আরও ফ্লেক্সিবল করে।
- কাস্টম কুইয়ারি এবং
JdbcTemplate এর সীমাবদ্ধতা
- বড় এবং জটিল অ্যাপ্লিকেশনগুলিতে ORM টুল যেমন Hibernate বা JPA প্রয়োজন হতে পারে।
- SQL কুইয়ারি ম্যানেজমেন্ট সম্পূর্ণরূপে ডেভেলপারের উপর নির্ভরশীল।
JdbcTemplate স্প্রিং জেডিবিসি ব্যবহারকারীদের জন্য একটি অত্যন্ত শক্তিশালী এবং সহজ সমাধান, বিশেষ করে যদি আপনি হালকা ডাটাবেস অপারেশন করতে চান।
Read more