JDBC (Java Database Connectivity) হল একটি API যা Java প্রোগ্রামগুলিকে ডাটাবেসের সাথে যোগাযোগ করতে সহায়তা করে। স্কালার মধ্যে JDBC ব্যবহার করতে, স্কালা ডেটাবেস অপারেশন সম্পাদন করার জন্য Java JDBC API ব্যবহার করে। স্কালার জন্য JDBC একটি সাধারণ এবং শক্তিশালী উপায়, যেখানে SQL কোয়েরি রিটার্ন করতে এবং ডাটাবেসে ডাটা ম্যানিপুলেট করতে সহায়তা করে।
এই গাইডে, আমরা দেখব কিভাবে স্কালায় JDBC ব্যবহার করে ডাটাবেসের সাথে সংযোগ স্থাপন করবেন এবং কিছু সাধারণ ডাটাবেস অপারেশন (যেমন: SELECT, INSERT) করব।
১. স্কালায় JDBC ডিপেন্ডেন্সি যুক্ত করা
প্রথমে, আপনার build.sbt ফাইলে JDBC ডিপেন্ডেন্সি যোগ করতে হবে। এখানে আমরা H2 ডাটাবেস (একটি ইন-মেমরি ডাটাবেস) ব্যবহার করব, তবে আপনি অন্য কোন ডাটাবেস যেমন MySQL বা PostgreSQL ব্যবহার করতে পারেন।
libraryDependencies += "com.h2database" % "h2" % "1.4.200"এখানে:
"com.h2database" % "h2" % "1.4.200"হ'ল H2 ডাটাবেস ডিপেন্ডেন্সি।
আপনি যদি MySQL বা PostgreSQL ব্যবহার করতে চান, তাহলে তাদের যথাযথ ডিপেন্ডেন্সি যোগ করতে হবে।
MySQL জন্য ডিপেন্ডেন্সি উদাহরণ:
libraryDependencies += "mysql" % "mysql-connector-java" % "8.0.23"২. ডাটাবেসের সাথে সংযোগ স্থাপন করা
এখন, আমাদের ডাটাবেসের সাথে সংযোগ স্থাপন করতে হবে। এটি করার জন্য, স্কালায় JDBC Connection তৈরি করতে হবে।
উদাহরণ: H2 ডাটাবেসের সাথে সংযোগ স্থাপন
import java.sql.{Connection, DriverManager, ResultSet}
object JDBCExample {
def main(args: Array[String]): Unit = {
// JDBC URL, User এবং Password
val jdbcUrl = "jdbc:h2:~/test;MODE=MySQL"
val username = "sa"
val password = ""
// ডাটাবেসের সাথে সংযোগ স্থাপন
val connection: Connection = DriverManager.getConnection(jdbcUrl, username, password)
// কোয়েরি এক্সিকিউট করা
val statement = connection.createStatement()
val resultSet: ResultSet = statement.executeQuery("SELECT * FROM test_table")
// রেজাল্ট প্রিন্ট করা
while (resultSet.next()) {
println(s"ID: ${resultSet.getInt("id")}, Name: ${resultSet.getString("name")}")
}
// সংযোগ বন্ধ করা
resultSet.close()
statement.close()
connection.close()
}
}এখানে:
DriverManager.getConnectionএর মাধ্যমে ডাটাবেসের সাথে সংযোগ স্থাপন করা হয়েছে।Statementতৈরি করেexecuteQueryব্যবহার করে SQL কোয়েরি চালানো হয়েছে।ResultSetব্যবহার করে SQL কোয়েরির ফলাফল রিটার্ন করা হয়েছে।
৩. INSERT, UPDATE এবং DELETE অপারেশন
JDBC এর মাধ্যমে আপনি INSERT, UPDATE, এবং DELETE অপারেশনও করতে পারেন।
উদাহরণ: ডাটাবেসে ডাটা ইনসার্ট করা
object JDBCExampleInsert {
def main(args: Array[String]): Unit = {
val jdbcUrl = "jdbc:h2:~/test;MODE=MySQL"
val username = "sa"
val password = ""
val connection: Connection = DriverManager.getConnection(jdbcUrl, username, password)
val insertQuery = "INSERT INTO test_table (id, name) VALUES (?, ?)"
val preparedStatement = connection.prepareStatement(insertQuery)
// মান সেট করা
preparedStatement.setInt(1, 1)
preparedStatement.setString(2, "Alice")
// ইনসার্ট কোয়েরি এক্সিকিউট করা
preparedStatement.executeUpdate()
println("Data inserted successfully")
// সংযোগ বন্ধ করা
preparedStatement.close()
connection.close()
}
}এখানে:
prepareStatementব্যবহার করে SQL ইনসার্ট কোয়েরি তৈরি করা হয়েছে।setIntএবংsetStringমেথড দ্বারা প্যারামিটার সেট করা হয়েছে এবং ইনসার্ট কোয়েরি এক্সিকিউট করা হয়েছে।
উদাহরণ: ডাটাবেসে ডাটা আপডেট করা
object JDBCExampleUpdate {
def main(args: Array[String]): Unit = {
val jdbcUrl = "jdbc:h2:~/test;MODE=MySQL"
val username = "sa"
val password = ""
val connection: Connection = DriverManager.getConnection(jdbcUrl, username, password)
val updateQuery = "UPDATE test_table SET name = ? WHERE id = ?"
val preparedStatement = connection.prepareStatement(updateQuery)
// মান সেট করা
preparedStatement.setString(1, "Bob")
preparedStatement.setInt(2, 1)
// আপডেট কোয়েরি এক্সিকিউট করা
preparedStatement.executeUpdate()
println("Data updated successfully")
// সংযোগ বন্ধ করা
preparedStatement.close()
connection.close()
}
}উদাহরণ: ডাটাবেস থেকে ডাটা ডিলিট করা
object JDBCExampleDelete {
def main(args: Array[String]): Unit = {
val jdbcUrl = "jdbc:h2:~/test;MODE=MySQL"
val username = "sa"
val password = ""
val connection: Connection = DriverManager.getConnection(jdbcUrl, username, password)
val deleteQuery = "DELETE FROM test_table WHERE id = ?"
val preparedStatement = connection.prepareStatement(deleteQuery)
// মান সেট করা
preparedStatement.setInt(1, 1)
// ডিলিট কোয়েরি এক্সিকিউট করা
preparedStatement.executeUpdate()
println("Data deleted successfully")
// সংযোগ বন্ধ করা
preparedStatement.close()
connection.close()
}
}৪. ট্রানজেকশন (Transaction)
JDBC ব্যবহার করে আপনি ট্রানজেকশন পরিচালনা করতে পারেন, যেখানে একাধিক SQL অপারেশন একত্রে কার্যকর করা হয়। এক বা একাধিক অপারেশন ব্যর্থ হলে সব অপারেশন রিভার্স করা হয়।
object JDBCExampleTransaction {
def main(args: Array[String]): Unit = {
val jdbcUrl = "jdbc:h2:~/test;MODE=MySQL"
val username = "sa"
val password = ""
val connection: Connection = DriverManager.getConnection(jdbcUrl, username, password)
// ট্রানজেকশন শুরু
connection.setAutoCommit(false)
try {
val statement = connection.createStatement()
statement.executeUpdate("INSERT INTO test_table (id, name) VALUES (1, 'Alice')")
statement.executeUpdate("INSERT INTO test_table (id, name) VALUES (2, 'Bob')")
// কমিট করা
connection.commit()
println("Transaction committed successfully")
} catch {
case e: Exception =>
// কোনো সমস্যা হলে রিভার্স করা
connection.rollback()
println("Transaction rolled back due to error: " + e.getMessage)
} finally {
connection.setAutoCommit(true)
connection.close()
}
}
}এখানে:
setAutoCommit(false)ব্যবহার করে ট্রানজেকশন শুরু করা হয়েছে।- যদি কোনো ত্রুটি ঘটে, তাহলে
rollbackব্যবহার করে সমস্ত পরিবর্তন রিভার্স করা হয়। - যদি সবকিছু ঠিক থাকে, তাহলে
commitকরা হয়।
৫. স্কালায় JDBC ব্যবহার করার সময় কিছু পরামর্শ
- ডিপেন্ডেন্সি ম্যানেজমেন্ট:
sbtবা অন্য বিল্ড টুল ব্যবহার করে JDBC ডিপেন্ডেন্সি সঠিকভাবে যুক্ত করুন। - রিসোর্স ক্লোজিং: ডাটাবেস সংযোগ ব্যবহারের পর
close()মেথড ব্যবহার করে সংযোগ এবং স্টেটমেন্ট বন্ধ করুন। - এক্সসেপশন হ্যান্ডলিং: অ্যাকশন চলাকালীন কোনো ত্রুটি হলে, সেগুলিকে যথাযথভাবে হ্যান্ডল করুন এবং রিভার্স (rollback) করার ব্যবস্থা রাখুন।
সারাংশ
- JDBC স্কালায় ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করার জন্য ব্যবহৃত হয়।
- আপনি
Connection,Statement,PreparedStatement, এবংResultSetএর মাধ্যমে SQL কোয়েরি রন করতে পারেন। - INSERT, UPDATE, DELETE, SELECT অপারেশনগুলি JDBC দিয়ে পরিচালনা করা যায়।
- ট্রানজেকশন এবং এক্সসেপশন হ্যান্ডলিং ব্যবহার করে আরও কার্যকরী ডাটাবেস অপারেশন করা সম্ভব।
এই নির্দেশিকাগুলির মাধ্যমে আপনি স্কাল
ার মধ্যে JDBC ব্যবহারের ভিত্তি শিখতে পারবেন এবং ডাটাবেসের সাথে স্কালার অ্যাপ্লিকেশন তৈরি করতে সক্ষম হবেন।
Read more