Traditional JDBC এবং Spring JDBC-এর মধ্যে মূল পার্থক্যগুলো হলো Traditional JDBC-তে প্রচুর বয়লারপ্লেট কোড লেখা প্রয়োজন, যেখানে Spring JDBC এই জটিলতাগুলো হ্রাস করে। নিচে এদের মধ্যে গুরুত্বপূর্ণ পার্থক্যগুলো উল্লেখ করা হলো:
১. বয়লারপ্লেট কোড
Traditional JDBC:
- কানেকশন ওপেন করা, স্টেটমেন্ট তৈরি করা, এক্সিকিউট করা এবং শেষে কানেকশন ক্লোজ করা—এই কাজগুলো বারবার করতে হয়।
- এক্সসেপশন হ্যান্ডলিং এর জন্য অতিরিক্ত কোড প্রয়োজন।
উদাহরণ:
Connection connection = null; PreparedStatement statement = null; ResultSet resultSet = null; try { connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password"); String sql = "SELECT id, name FROM students WHERE id = ?"; statement = connection.prepareStatement(sql); statement.setInt(1, 1); resultSet = statement.executeQuery(); while (resultSet.next()) { System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name")); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (resultSet != null) resultSet.close(); if (statement != null) statement.close(); if (connection != null) connection.close(); } catch (SQLException ex) { ex.printStackTrace(); } }Spring JDBC:
JdbcTemplateএবং অন্যান্য utility ক্লাস ব্যবহার করে বয়লারপ্লেট কোড প্রায় পুরোপুরি এড়ানো যায়।- কানেকশন ম্যানেজমেন্ট, স্টেটমেন্ট ক্লোজিং ইত্যাদি স্প্রিং নিজে থেকে হ্যান্ডল করে।
উদাহরণ:
@Autowired private JdbcTemplate jdbcTemplate; public List<Student> getStudents() { String sql = "SELECT id, name FROM students"; return jdbcTemplate.query(sql, (rs, rowNum) -> { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); return student; }); }
২. এক্সসেপশন হ্যান্ডলিং
Traditional JDBC:
- চেকড এক্সসেপশন (Checked Exception) ব্যবহার করে।
SQLExceptionহ্যান্ডল করতে অতিরিক্ত কোড প্রয়োজন।
উদাহরণ:
try { // Database operation } catch (SQLException e) { e.printStackTrace(); }- চেকড এক্সসেপশন (Checked Exception) ব্যবহার করে।
Spring JDBC:
- Spring এর DataAccessException ইন্টারফেস ব্যবহার করে। এটি চেকড এক্সসেপশনকে রানটাইম এক্সসেপশনে কনভার্ট করে, যা কোডকে আরও সহজ ও ক্লিন করে।
উদাহরণ:
try { jdbcTemplate.queryForObject("SELECT * FROM students WHERE id = ?", new Object[]{1}, Student.class); } catch (DataAccessException e) { e.printStackTrace(); }
৩. কানেকশন ম্যানেজমেন্ট
- Traditional JDBC:
- ডেভেলপারকে নিজে থেকেই কানেকশন ম্যানেজমেন্টের কাজ করতে হয়, যেমন কানেকশন ওপেন ও ক্লোজ করা।
- ভুল কানেকশন হ্যান্ডলিং এর কারণে Resource Leak এর সম্ভাবনা থাকে।
- Spring JDBC:
- Spring নিজেই কানেকশন ম্যানেজমেন্টের দায়িত্ব নেয়।
DataSourceব্যবহার করে কানেকশন পুলিং সহজে ইমপ্লিমেন্ট করা যায়।
৪. Utility ক্লাস এবং Template প্যাটার্ন
- Traditional JDBC:
- ডেভেলপারকে পুরো কাজ নিজে করতে হয়। যেমন: কোয়ারি তৈরি, প্যারামিটার সেট করা, এবং রেজাল্ট প্রসেস করা।
- Spring JDBC:
JdbcTemplateএবংNamedParameterJdbcTemplateব্যবহার করে ডাটাবেস অপারেশন সহজ করা হয়।- Spring এর utility ক্লাসগুলো ডেভেলপারকে কম কোড লিখে একই কাজ সম্পন্ন করতে সাহায্য করে।
৫. Readable এবং Maintainable Code
- Traditional JDBC:
- কোড বড় এবং জটিল হয়ে যায়। ফলে এটি পড়া এবং রক্ষণাবেক্ষণ করা কঠিন হয়।
- Spring JDBC:
- কোড কমপ্যাক্ট এবং সহজবোধ্য। রক্ষণাবেক্ষণ সহজ।
৬. বিল্ট-ইন ফিচার
- Traditional JDBC:
- কোনো বিল্ট-ইন ফিচার বা সুবিধা নেই। সবকিছু ডেভেলপারকে নিজে ইমপ্লিমেন্ট করতে হয়।
- Spring JDBC:
- RowMapper, ResultSetExtractor, এবং অন্যান্য abstraction দিয়ে ডাটাবেস ইন্টারঅ্যাকশন সহজ করে।
- টেমপ্লেট-মেথড ডিজাইন প্যাটার্ন ব্যবহার করে কোড পুনরায় ব্যবহারযোগ্য করে।
উদাহরণ: Traditional JDBC বনাম Spring JDBC
Traditional JDBC:
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
PreparedStatement ps = conn.prepareStatement("SELECT id, name FROM students WHERE id = ?");
ps.setInt(1, 1);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
}
rs.close();
ps.close();
conn.close();
Spring JDBC:
String sql = "SELECT id, name FROM students WHERE id = ?";
Student student = jdbcTemplate.queryForObject(sql, new Object[]{1}, (rs, rowNum) -> {
Student s = new Student();
s.setId(rs.getInt("id"));
s.setName(rs.getString("name"));
return s;
});
System.out.println(student);
সংক্ষেপে পার্থক্য:
| বৈশিষ্ট্য | Traditional JDBC | Spring JDBC |
|---|---|---|
| বয়লারপ্লেট কোড | অনেক বেশি | খুবই কম |
| কানেকশন ম্যানেজমেন্ট | ম্যানুয়াল | Spring স্বয়ংক্রিয়ভাবে পরিচালনা করে |
| এক্সসেপশন হ্যান্ডলিং | চেকড এক্সসেপশন | রানটাইম এক্সসেপশন |
| কোড রিডেবিলিটি | কম | বেশি |
| ইউটিলিটি সাপোর্ট | নেই | অনেক বেশি |
| প্রোডাক্টিভিটি | কম | বেশি |
Spring JDBC সহজ, কার্যকর এবং উৎপাদনশীল। Traditional JDBC এর তুলনায় এটি ডেভেলপারদের জন্য অনেক বেশি সুবিধাজনক।
Content added By
Read more