Quarkus(Kotlin)からNEONへ接続する
はじめに
個人開発について漫然と考えていると、ふと社内でNEONという良さげなDBaaSの風の噂を盗み聞きしました。この記事では普段使っているKotlinとフレームワークQuarkusで、実際にNEONに接続するまでを追った記録です。
参考文献は
https://neon.com/docs/guides/quarkus-jdbc
https://ja.quarkus.io/guides/datasource
になります。基本的にはNEONの記事を追っています。
NEONとはPostgreSQLが使えるクラウドサービスで
本記事の構成は
となっております。
サインアップしてプロジェクトを作成する
私はGoogleアカウントでログインしました。

プロジェクトを作成する画面が出現すると思いますが、特に設定することなく進めています。
ダッシュボードからDBへの接続情報を取得する
ダッシュボードに接続するための情報が得られるConnection stringにアクセスしましょう。

すると

という画面が得られます。赤い四角で隠している部分が接続先のDBの設定です。 後ほど、コンフィグファイルの設定に使うので控えておきましょう。
ちなみにconnection stringについてpsql以下はそれぞれ
postgresql://[ユーザ名] : [パスワード] @ [ホスト名] / [データベース名] ? [接続オプション]
に対応しています(可視性のため、空白を多めに入れております)。
Quarkusを立ち上げる
基本的には公式に倣いますが、本記事においてJavaではなくKotlinを使用するため、Quarkusの作成コマンドには気をつけておきます。kotlin extension と--gradle-kotlin-dslオプションに注意してください。
quarkus create app neon-with-quarkus-jdbc \
--name neon-with-quarkus-jdbc \
--package-name com.neon.tech \
--extensions kotlin,jdbc-postgresql,quarkus-agroal,resteasy-reactive \
--gradle-kotlin-dsl
https://ja.quarkus.io/guides/kotlin
application.propertiesに設定を施す
src/main/resources/の中にapplication.propertiesという設定ファイルがあります。
先ほどConnection stringで取得した情報を、ここで設定します(参照記事)。
quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=<username>
quarkus.datasource.password=<password>
quarkus.datasource.jdbc.url=<url>
PostgreSQL JDBC Driverを使う
あとはsrc/main/kotlinにあるcom.neon.techパッケージの中でPostgresResource.ktを作成します。中身は下記のようにしてみてください。
package com.neon.tech
import javax.sql.DataSource
import jakarta.ws.rs.GET
import jakarta.ws.rs.Path
import jakarta.ws.rs.Produces
import jakarta.ws.rs.core.MediaType
@Path("/postgres")
class PostgresResource(
private val dataSource: DataSource
) {
@GET
@Path("/version")
@Produces(MediaType.TEXT_PLAIN)
fun getVersion(): String {
return dataSource.connection.use { conn ->
val metaData = conn.metaData
"${metaData.databaseProductName} ${metaData.databaseProductVersion}"
}
}
}
ここまで来ればほぼ終わりです。
接続確認する
./gradlew quarkusDevコマンドでプロジェクトを実行しましょう。

localhostがポート8080でリッスンしているので、ここへcurl http://localhost:8080/postgres/versionとリクエストします。するとPostgreSQL 17.7 (bdd1736)%のようなレスポンスが返ってきます。これにて接続の確認が完了です。
Inuverse Sci. X Tech. Blog