我正在使用jetbrains' exposed库来创建和填充数据库。
数据库不存在,我正在创建它。但是我找不到一种简单的方法来连接到 SQL 引擎、创建数据库并在没有多个连接的情况下连接到该数据库。 这听起来有点笨拙。也许有更好的方法吗?
这是一个小例子:
var db = Database.connect("jdbc:mysql://localhost:3308", driver = "com.mysql.jdbc.Driver", user = "root", password = "aRootPassword")
transaction(db) { SchemaUtils.createDatabase("imdb") }
// avoid reconnect?
db = Database.connect("jdbc:mysql://localhost:3308/imdb", driver = "com.mysql.jdbc.Driver", user = "root", password = "aRootPassword")
transaction(db) { SchemaUtils.create (TitleRatings) }
最佳答案
您需要一个连接池,例如HikariCP 。它汇集数据库连接并重用它们。与单独打开的连接相比,这会给您带来巨大的性能提升。
我通常将它包装在一个简单的类中,如下所示:
import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource
import javax.sql.DataSource
public object DB {
var db: DataSource = connect();
public fun connect(): DataSource {
val config = HikariConfig()
config.jdbcUrl = "jdbc:mysql://localhost:3308"
config.username = "com.mysql.jdbc.Driver"
config.password = "aRootPassword"
config.driverClassName = "com.mysql.jdbc.Driver"
return HikariDataSource(config)
}
}
我的交易如下所示:
transaction(Database.connect(DB.db)) {
SchemaUtils.createDatabase("imdb")
}
关于kotlin - 使用 Kotlin Exposed 创建数据库后连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60580518/