جلسه شماره 32رایگان

JDBC Intro | معرفی JDBC

00:41:19

توضیحات جلسه

🎥 این ویدیو قسمت سی‌ودوم از بوت‌کمپ رایگان جاواست. 📚 معرفی کلی JDBC در جاوا در این جلسه به یکی از مهم‌ترین ابزارهای اتصال جاوا به دیتابیس‌ها می‌پردازیم: JDBC. با هم یاد می‌گیریم JDBC چیست، چه کاربردی دارد و چرا استفاده از آن برای کار با پایگاه‌داده‌ها ضروری است. در این ویدیو با مفاهیم اصلی JDBC آشنا می‌شویم: - معرفی DriverManager و نقش آن در برقراری اتصال به دیتابیس - کار با Statement برای اجرای کوئری‌ها - مدیریت و خواندن نتایج با ResultSet - بستن صحیح اتصال‌ها (close connection) برای جلوگیری از خطاها و نشتی حافظه در پایان جلسه یک مرور کلی داریم تا همه نکات مهم به‌صورت منظم در ذهن تثبیت شود. 📌 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi هر سوالی داشتی می‌تونی توی گروه بپرسی؛ من یا مربی‌های گروه کمکت می‌کنیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار.

جزوه و مستندات

مفاهیم کلیدی

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() را روی اشیای ارتباطی فراخوانی کنید تا منابع پایگاه‌داده آزاد شوند.