Table DSL से Tables परिभाषित करना
Columns, primary keys और foreign keys वाले typed table schemas परिभाषित करें।
Table DSL से Tables परिभाषित करना, CoddyKit पर Kotlin Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Kotlin Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Exposed तालिका ऑब्जेक्ट
Exposed में डेटाबेस तालिकाओं को Kotlin के एकल object के रूप में दर्शाया जाता है, जो Table (क्वेरी DSL) या IntIdTable/LongIdTable/UUIDTable (DAO परत) का विस्तार करते हैं। कॉलम की परिभाषाएँ Kotlin के गुणधर्म होते हैं।
तालिका की मूल परिभाषा
Table का विस्तार करें और अंतर्निर्मित कॉलम बनाने वाले फ़ंक्शन का उपयोग करके कॉलम परिभाषित करें:
import org.jetbrains.exposed.sql.Table
object Users : Table("users") {
val id = long("id").autoIncrement()
val name = varchar("name", 100)
val email = varchar("email", 255).uniqueIndex()
val age = integer("age").nullable()
override val primaryKey = PrimaryKey(id)
}कॉलम के प्रकार
Exposed सामान्य SQL प्रकारों के लिए कॉलम बनाने वाले फ़ंक्शन उपलब्ध कराता है:
integer("col"),long("col"),short("col")varchar("col", length),text("col")bool("col"),double("col"),decimal("col", precision, scale)datetime("col"),date("col"),timestamp("col")blob("col"),uuid("col"),binary("col", length)
शून्य-योग्य कॉलम
किसी भी कॉलम में .nullable() कॉल करके NULL मानों की अनुमति दें। Kotlin का प्रकार भी शून्य-योग्य हो जाता है (String के बजाय String?):
object Products : Table("products") {
val id = long("id").autoIncrement()
val name = varchar("name", 200)
val description = text("description").nullable()
override val primaryKey = PrimaryKey(id)
}डिफ़ॉल्ट मान
Kotlin-पक्षीय डिफ़ॉल्ट के लिए .default(value) (इंसर्ट से पहले लागू) या डेटाबेस-पक्षीय SQL डिफ़ॉल्ट के लिए .defaultExpression(expr) का उपयोग करें:
object Orders : Table("orders") {
val id = long("id").autoIncrement()
val status = varchar("status", 20).default("PENDING")
val createdAt = datetime("created_at")
.defaultExpression(CurrentDateTime)
override val primaryKey = PrimaryKey(id)
}इंडेक्स और विशिष्टता बाधाएँ
किसी कॉलम पर सीधे सामान्य इंडेक्स के लिए .index() या विशिष्ट इंडेक्स के लिए .uniqueIndex() कॉल करें। संयुक्त इंडेक्स के लिए Table पर index() फ़ंक्शन का उपयोग करें:
object Articles : Table("articles") {
val id = long("id").autoIncrement()
val title = varchar("title", 300).index()
val slug = varchar("slug", 300).uniqueIndex()
override val primaryKey = PrimaryKey(id)
}विदेशी कुंजियाँ
कॉलम के बीच विदेशी कुंजी बाधा घोषित करने के लिए .references() का उपयोग करें। संदर्भित कॉलम और वैकल्पिक रूप से onDelete तथा onUpdate क्रियाएँ पास करें:
object Posts : Table("posts") {
val id = long("id").autoIncrement()
val authorId = long("author_id").references(Users.id, onDelete = ReferenceOption.CASCADE)
val title = varchar("title", 300)
override val primaryKey = PrimaryKey(id)
}IdTable के प्रकार
DAO परत के लिए साधारण Table के बजाय ID-प्रकार वाली तालिकाओं का उपयोग करें:
IntIdTable("name")—Intका ऑटो-इन्क्रीमेंट प्राथमिक कुंजी, जिसका नामidहैLongIdTable("name")—Longकी ऑटो-इन्क्रीमेंट प्राथमिक कुंजीUUIDTable("name")— UUID प्राथमिक कुंजी
object Users : LongIdTable("users") {
val name = varchar("name", 100)
val email = varchar("email", 255).uniqueIndex()
}संयुक्त प्राथमिक कुंजियाँ
PrimaryKey() में कई कॉलम पास करके संयुक्त प्राथमिक कुंजी परिभाषित करें:
object UserRoles : Table("user_roles") {
val userId = long("user_id").references(Users.id)
val roleId = long("role_id").references(Roles.id)
override val primaryKey = PrimaryKey(userId, roleId)
}एनम कॉलम
enumerationByName() या enumeration() का उपयोग करके Kotlin एनम मानों को स्ट्रिंग या क्रमांक के रूप में संग्रहीत करें:
enum class Status { ACTIVE, INACTIVE, BANNED }
object Users : LongIdTable("users") {
val name = varchar("name", 100)
val status = enumerationByName<Status>("status", 20)
}स्कीमा में बदलाव लागू करना
मौजूदा डेटा हटाए बिना छूटी हुई तालिकाएँ और कॉलम जोड़ने के लिए SchemaUtils.createMissingTablesAndColumns() कॉल करें — यह डेवलपमेंट के लिए सुरक्षित माइग्रेशन है। प्रोडक्शन के लिए Flyway या Liquibase जैसे माइग्रेशन टूल का उपयोग करें।
transaction {
SchemaUtils.createMissingTablesAndColumns(Users, Posts, Orders)
}त्वरित जाँच
Exposed के Table DSL में Posts.authorId से Users.id तक विदेशी कुंजी कैसे घोषित करते हैं?
पुनरावलोकन: Table DSL से तालिकाएँ परिभाषित करना
मुख्य बातें:
- तालिकाएँ
Table,LongIdTableआदि का विस्तार करने वालेobjectहोते हैं - कॉलम:
varchar,integer,long,bool,datetime,uuidआदि .nullable(),.default(),.uniqueIndex(),.references()कॉलम में बदलाव करते हैं- संयुक्त प्राथमिक कुंजियाँ:
PrimaryKey(col1, col2) SchemaUtils.create()याcreateMissingTablesAndColumns()से स्कीमा लागू करें
एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “Table DSL से Tables परिभाषित करना” पाठ निःशुल्क है?
हाँ — Kotlin Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Table DSL से Tables परिभाषित करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Table DSL से Tables परिभाषित करना” में मैं क्या सीखूँगा?
Columns, primary keys और foreign keys वाले typed table schemas परिभाषित करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Kotlin Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Kotlin Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Kotlin Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Table DSL से Tables परिभाषित करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Kotlin Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Kotlin Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Exposed Setup: Database Connection और Transaction DSL
- Table DSL से Tables परिभाषित करना
- Query DSL से CRUD: insert, select, update, delete
- Exposed DAO: Entity Classes और Relationships