مقدمة في العمل مع قواعد البيانات في Kotlin
Kotlin هي لغة برمجة حديثة تُستخدم بنشاط لإنشاء تطبيقات الخادم، وتطوير Android، وخدمات الواجهة الخلفية. من المهارات الأساسية لأي مطور هي القدرة على العمل مع قواعد البيانات. في هذه المقالة، سنشرح كيفية الاتصال بقاعدة البيانات العلائقية PostgreSQL وقاعدة البيانات الوثائقية MongoDB باستخدام Kotlin. المحتوى موجه للمبتدئين: سننظر في تثبيت برامج التشغيل، وإعداد الاتصال، وتنفيذ عمليات CRUD الأساسية (إنشاء، قراءة، تحديث، حذف).
1. إعداد البيئة والتبعيات
للعمل، ستحتاج إلى مشروع Kotlin (على سبيل المثال، باستخدام Gradle أو Maven). سنستخدم Gradle — أداة البناء الأكثر شيوعًا في نظام Kotlin البيئي. أضف التبعيات التالية إلى ملف build.gradle.kts:
dependencies { // For PostgreSQL implementation("org.jetbrains.exposed:exposed-core:0.44.1") implementation("org.jetbrains.exposed:exposed-dao:0.44.1") implementation("org.jetbrains.exposed:exposed-jdbc:0.44.1") implementation("org.postgresql:postgresql:42.7.1")
// For MongoDB implementation("org.mongodb:mongodb-driver-kotlin-sync:4.11.1") implementation("org.mongodb:bson-kotlinx:4.11.1")}Exposed هي مكتبة ORM خفيفة الوزن لـ Kotlin، تُبسط العمل مع قواعد SQL. بالنسبة لـ MongoDB، نستخدم برنامج تشغيل Kotlin الرسمي من MongoDB.
2. العمل مع PostgreSQL عبر Exposed
2.1. الاتصال بقاعدة البيانات
أولاً، لننشئ كائنًا للاتصال بـ PostgreSQL. تأكد من تشغيل خادم PostgreSQL على جهاز الكمبيوتر الخاص بك وإنشاء قاعدة بيانات (على سبيل المثال، testdb).
import org.jetbrains.exposed.sql.Databaseimport org.jetbrains.exposed.sql.transactions.transaction
fun main() { // الاتصال بقاعدة البيانات المحلية Database.connect( url = "jdbc:postgresql://localhost:5432/testdb", driver = "org.postgresql.Driver", user = "postgres", password = "your_password" )
println("تم إنشاء الاتصال بـ PostgreSQL بنجاح")}بعد الاتصال، يمكن تنفيذ استعلامات SQL. يستخدم Exposed DSL (لغة خاصة بالمجال) لكتابة الاستعلامات بلغة Kotlin.
2.2. إنشاء جدول وعمليات CRUD
لنحدد جدولًا بسيطًا Users مع الحقول id و name و email:
import org.jetbrains.exposed.sql.*import org.jetbrains.exposed.sql.transactions.transaction
object Users : Table() { val id = integer("id").autoIncrement() val name = varchar("name", 50) val email = varchar("email", 100)
override val primaryKey = PrimaryKey(id)}
fun main() { Database.connect(...)
transaction { // إنشاء الجدول SchemaUtils.create(Users)
// INSERT (إنشاء) Users.insert { it[name] = "إيفان بيتروف" it[email] = "ivan@example.com" }
// SELECT (قراءة) val users = Users.selectAll().map { "${it[Users.id]}: ${it[Users.name]} (${it[Users.email]})" } println("المستخدمون: $users")
// UPDATE (تحديث) Users.update({ Users.id eq 1 }) { it[name] = "إيفان سيدوروف" }
// DELETE (حذف) Users.deleteWhere { Users.id eq 1 } }}كما ترى، الكود مشابه جدًا لـ SQL العادي، لكنه مكتوب بلغة Kotlin الخالصة. يقوم Exposed تلقائيًا بتسلسل الأسماء والحماية من حقن SQL.
3. العمل مع MongoDB عبر Kotlin Driver
3.1. الاتصال بـ MongoDB
MongoDB هي قاعدة بيانات NoSQL، تخزن البيانات في شكل مستندات تشبه JSON. للاتصال، نستخدم برنامج التشغيل المتزامن:
import com.mongodb.kotlin.client.coroutine.MongoClientimport kot