1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NEON(DB)へQuarkus(Kotlin)から接続する

1
Last updated at Posted at 2026-01-29

はじめに

個人開発について漫然と考えていると、ふと社内でNEONという良さげなDBaaSの風の噂を盗み聞きしました。この記事では普段使っているKotlinとフレームワークQuarkusで、実際にNEONに接続するまでを追った記録です。

参考文献は

になります。基本的にはNEONの記事を追っています。

NEONとはPostgreSQLが使えるクラウドサービスで

が特徴です。詳しくは他の記事を参考にしてみてください12。

本記事の構成は

となっております。


サインアップしてプロジェクトを作成する

私はGoogleアカウントでログインしました。

スクリーンショット 2026-01-30 0.52.33.png

プロジェクトを作成する画面が出現すると思いますが、特に設定することなく進めています。

ダッシュボードからDBへの接続情報を取得する

ダッシュボードに接続するための情報が得られるConnection stringにアクセスしましょう。

neon-connection-string-in-dashboard.png

すると

neon-connection-string-contents.png

という画面が得られます。赤い四角で隠している部分が接続先の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

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コマンドでプロジェクトを実行しましょう。

スクリーンショット 2026-01-30 1.30.52.png

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

  1. https://micro-exits.dev/blog/019550f7-9413-753e-8cab-822d1c6aadad ↩

  2. https://qiita.com/nuko-suke/items/e940ff8ccde35d09f668 ↩

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?