Taiwan Kotlin User Group 的網站,在台灣推廣 Kotlin 程式語言,舉辦相關活動。如果對 Kotlin 有興趣,想要多瞭解一些,歡迎來我們的社群一起聚會!
Exposed 是一個 Kotlin 的 ORM framework,基於 JDBC driver 上開發,由 JetBrains 官方開發與維護。
如前面所說,這個框架的目的,主要是協助我們在 Kotlin 專案裏面串接資料庫。
這個框架目前已經支援很多開發或正式使用的資料庫,比方說:
Exposed 框架是純 Kotlin 語言,所以不用擔心同一專案需要多個語言維護,導致提升開發以及維護的難度。
得益於 Kotlin 的語法,這個框架使用起來的感覺非常簡單易懂。不像部分語言受限於特性,無法完整的以物件導向方式撰寫資料庫的串接邏輯。
個人認為,比起許多語言串接資料庫的方式開發上,要好學以及容易開發很多。
Exposed 框架是 open source 的,使用 Apache License 2.0。
所以不像有的框架,需要擔心使用時的授權或費用等問題。
使用 DSL 存取資料庫的範例如下
object Cities: IntIdTable() {
val name = varchar("name", 50)
}
fun main() {
Database.connect(
"jdbc:h2:mem:test",
driver = "org.h2.Driver"
)
transaction {
SchemaUtils.create(Cities)
val id = Cities.insertAndGetId {
it[name] = "Taipei"
}
Cities
.select { Cities.id eq id }
.forEach {
println("City #$id: ${it[Cities.name]}")
}
}
}
使用 DAO 存取資料庫的範例如下
object Cities: IntIdTable() {
val name = varchar("name", 50)
}
class City(id: EntityID<Int>) : IntEntity(id) {
companion object : IntEntityClass<City>(Cities)
var name by Cities.name
}
fun main() {
Database.connect(
"jdbc:h2:mem:test",
driver = "org.h2.Driver"
)
transaction {
SchemaUtils.create(Cities)
val city = City.new {
name = "Taipei"
}
println("City #${city.id}: ${city.name}")
}
}
有更多想知道的嗎?
歡迎加入 kotlin.tips 的 Kotlin 讀書會 !