JDBC Intro | معرفی JDBC
توضیحات جلسه
جزوه و مستندات
مفاهیم کلیدی
JDBC (Java Database Connectivity)
JDBC یک API استاندارد در جاوا است که به برنامهنویسان اجازه میدهد به انواع پایگاهدادههای رابطهای، مانند PostgreSQL، MySQL و Oracle، متصل شوند و دستورات SQL را اجرا کنند.
DriverManager
DriverManager کلاسی است که مسئول مدیریت درایورهای پایگاهداده و برقراری نخستین پل ارتباطی (Connection) بین برنامه جاوا و پایگاهداده میباشد.
Connection
Connection یک Interface است که نشاندهنده اتصال فیزیکی به پایگاهداده میباشد. تمام تعاملات با پایگاهداده از طریق این شیء انجام میشوند.
Statement
Statement ابزاری برای ارسال دستورات ساده SQL به پایگاهداده است. زمانی از آن استفاده میشود که کوئریها پارامتر متغیر نداشته باشند.
PreparedStatement
PreparedStatement نسخه پیشرفتهتر و امنتر Statement است که کوئریها را از پیش کامپایل میکند و برای اجرای دستورات تکراری با پارامترهای مختلف، عملکرد بسیار بهینهای دارد.
ResultSet
ResultSet جدولی مجازی از دادهها است که پس از اجرای کوئریهای SELECT توسط پایگاهداده برگردانده میشود و امکان پیمایش بین سطرها را فراهم میکند.
Maven Dependency
Maven Dependency به کتابخانههای خارجی، مانند درایور مخصوص PostgreSQL، گفته میشود که باید به پروژه اضافه شوند تا جاوا بتواند با پایگاهداده موردنظر ارتباط برقرار کند.
نکات مهم مصاحبهای
چرا به جای آرایهها از JDBC و پایگاهداده استفاده میکنیم؟
به دو دلیل اصلی:
۱. پایداری دادهها: با بسته شدن برنامه یا قطع برق، دادهها از بین نمیروند.
۲. مدیریت حجم بالای داده: پایگاهداده میتواند میلیونها رکورد را مدیریت کند؛ حتی زمانی که این دادهها در حافظه RAM جا نشوند. همچنین امکان جستوجوی بهینه را فراهم میکند.
تفاوت متدهای executeQuery و executeUpdate چیست؟
متد executeQuery برای اجرای دستورات SELECT استفاده میشود و یک شیء از نوع ResultSet برمیگرداند.
در مقابل، متد executeUpdate برای اعمال تغییراتی مانند INSERT، UPDATE و DELETE به کار میرود و تعداد سطرهای تغییریافته را برمیگرداند.
چرا بستن (close) منابع در JDBC ضروری است؟
اتصال به پایگاهداده منابع سیستم را اشغال میکند. اگر اشیای Connection، Statement و ResultSet پس از پایان کار بسته نشوند، نشت منابع (Resource Leak) رخ میدهد. این مشکل میتواند باعث از کار افتادن برنامه یا حتی پایگاهداده شود.
مثال یا سناریوی کاربردی
برای اتصال به پایگاهداده PostgreSQL و ایجاد یک جدول، مراحل زیر طی میشوند:
۱. افزودن درایور
ابتدا باید وابستگی (Dependency) مربوط به postgresql را از مخازن Maven دریافت کرده و به فایل pom.xml اضافه کنید.
۲. برقراری اتصال
با استفاده از نشانی URL پایگاهداده، نام کاربری و رمز عبور، یک اتصال برقرار میکنیم:
String url = "jdbc:postgresql://localhost:5432/postgres";
Connection connection = DriverManager.getConnection(url, "user", "pass");
۳. ساخت جدول و درج داده
Statement statement = connection.createStatement();
// ایجاد جدول
statement.execute("CREATE TABLE IF NOT EXISTS employees (id SERIAL, name VARCHAR(50))");
// درج داده
int rowsAffected = statement.executeUpdate(
"INSERT INTO employees (name) VALUES ('John')"
);
۴. خواندن دادهها
ResultSet resultSet = statement.executeQuery("SELECT * FROM employees");
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
بیشتر بدانید
فرمت URL
ساختار نشانی اتصال به PostgreSQL بهصورت زیر است:
jdbc:postgresql://host:port/database_name
پورت پیشفرض PostgreSQL معمولاً 5432 است.
مدیریت استثناها
هنگام کار با JDBC، باید استثنای SQLException را مدیریت کنید؛ زیرا ممکن است پایگاهداده در دسترس نباشد یا کوئری بهدرستی نوشته نشده باشد.
آزادسازی منابع
همیشه در پایان کار، متد .close() را روی اشیای ارتباطی فراخوانی کنید تا منابع پایگاهداده آزاد شوند.
