Kotlin के लिए ORM: Exposed बनाम Ktor बनाम Ktorm — तुलना और उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin के लिए ORM: तुलना और उदाहरण

\n\n

Kotlin एक आधुनिक भाषा है जिसका उपयोग बैकएंड एप्लिकेशन, Android एप्लिकेशन और यहां तक कि क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट विकसित करने के लिए सक्रिय रूप से किया जाता है। डेटाबेस के साथ काम करने के लिए, डेवलपर्स अक्सर ORM (Object-Relational Mapping) चुनते हैं ताकि कच्चे SQL क्वेरी लिखने से बचा जा सके और विकास में तेजी लाई जा सके। इस लेख में, हम Kotlin के लिए तीन लोकप्रिय ORM टूल देखेंगे: Exposed, Ktor (Exposed के साथ संयोजन में) और Ktorm। हम व्यावहारिक उदाहरणों पर उनके सिंटैक्स, प्रदर्शन और उपयोग में आसानी की तुलना करेंगे।

\n\n

1. Exposed — JetBrains का आधिकारिक ORM

\n\n

Exposed JetBrains द्वारा विशेष रूप से Kotlin के लिए विकसित एक ORM लाइब्रेरी है। यह दो दृष्टिकोणों का समर्थन करता है: DSL (Domain Specific Language) और DAO (Data Access Objects)। Exposed Ktor फ्रेमवर्क के साथ पूरी तरह से एकीकृत होता है, लेकिन इसका उपयोग अलग से भी किया जा सकता है।

\n\n

मुख्य विशेषताएं:

\n
    \n
  • हल्का और सहज ज्ञान युक्त DSL सिंटैक्स।
  • \n
  • लेन-देन, माइग्रेशन और कनेक्शन के लिए समर्थन।
  • \n
  • PostgreSQL, MySQL, H2, SQLite और अन्य डेटाबेस के साथ काम करता है।
  • \n
  • सक्रिय समुदाय और आधिकारिक दस्तावेज़ीकरण।
  • \n
\n\n

कोड उदाहरण (DSL दृष्टिकोण):

\n
import org.jetbrains.exposed.sql.*\nimport org.jetbrains.exposed.sql.transactions.transaction\n\n// तालिका की परिभाषा\nobject Users : Table() {\n    val id = integer("id").autoIncrement()\n    val name = varchar("name", 50)\n    val age = integer("age")\n\n    override val primaryKey = PrimaryKey(id)\n}\n\n// क्वेरी का उदाहरण\nfun main() {\n    Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver")\n\n    transaction {\n        SchemaUtils.create(Users)\n\n        // सम्मिलन\n        Users.insert {\n            it[name] = "Alice"\n            it[age] = 30\n        }\n\n        // चयन\n        val result = Users.selectAll().where { Users.age greater 25 }\n        result.forEach {\n            println("${it[Users.name]}: ${it[Users.age]}")\n        }\n    }\n}
\n\n

2. Ktor + Exposed — वेब एप्लिकेशन के लिए संयोजन

\n\n

Ktor Kotlin के लिए एक एसिंक्रोनस वेब फ्रेमवर्क है। हालांकि Ktor स्वयं कोई अंतर्निहित ORM प्रदान नहीं करता है, यह Exposed के साथ मिलकर बहुत अच्छा काम करता है। ऐसा संयोजन न्यूनतम कोड के साथ REST API बनाने की अनुमति देता है।

\n\n

Ktor को Exposed के साथ एकीकृत करने का उदाहरण:

\n
import io.ktor.server.application.*\nimport io.ktor.server.routing.*\nimport io.ktor.server.response.*\nimport org.jetbrains.exposed.sql.*\nimport org.jetbrains.exposed.sql.transactions.transaction\n\nfun Application.module() {\n    Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver")\n\n    routing {\n        get("/users") {\n            val users = transaction {\n                Users.selectAll().map {\n                    mapOf("name" to it[Users.name], "age" to it[Users.age])\n                }\n            }\n            call.respond(users)\n        }\n    }\n}
\n\n

यह दृष्टिकोण माइक्रोसर्विसेज और छोटे प्रोजेक्ट के लिए उपयुक्त है जहां सरलता और विकास की गति महत्वपूर्ण है।

\n\n

3. Ktorm — हल्का और उच्च प्रदर्शन वाला ORM

\n\n

Ktorm Kotlin के लिए एक और लोकप्रिय ORM है जो प्रदर्शन और न्यूनतमता पर केंद्रित है। यह कार्यात्मक प्रोग्रामिंग का उपयोग करता है और DSL के साथ-साथ SQL-जैसे सिंटैक्स दोनों का समर्थन करता है।

\n\n

मुख्य विशेषताएं:

\n
    \n
  • रिफ्लेक्शन की अनुपस्थिति के कारण उच्च प्रदर्शन।
  • \n
  • एक्सटेंशन के लिए समर्थन (उदाहरण के लिए, JSON फ़ील्ड के लिए)।
  • \n
  • सरल कॉन्फ़िगरेशन और न्यूनतम निर्भरताएं।
  • \n
  • अधिकांश लोकप्रिय DBMS के साथ काम करता है।
  • \n
\n\n

Ktorm कोड उदाहरण:

\n
import me.liuwj.ktorm.database.Database\nimport me.liuwj.ktorm.dsl.*\nimport me.liuwj.ktorm.entity.*\n\n// इकाई की परिभाषा\ninterface User : Entity {\n    compan                    

अनुशंसाएँ