2

我正在使用jetbrains 的公开库来创建和填充数据库。

数据库不存在,我正在创建它。但是,我找不到一种简单的方法来连接到 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) }
4

1 回答 1

2

您需要一个连接池,例如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")
}
于 2020-09-30T08:16:10.787 回答