すべてのプロダクト
Search
ドキュメントセンター

Lindorm:Java JDBC インターフェイスを使用したアプリケーション開発

最終更新日:Feb 04, 2026

このトピックでは、標準の Java Database Connectivity (JDBC) インターフェイスを使用して SQL で Lindorm ワイドテーブルアプリケーションを開発する方法について説明し、コード例を示します。

前提条件

  • JDK 1.8 以降のバージョンの Java 環境がインストールされている必要があります。

  • クライアントの IP アドレスが Lindorm のホワイトリストに追加されている必要があります。詳細については、「ホワイトリストの設定」をご参照ください。

制限事項

このトピックの操作は、ワイドテーブルモードの Lindorm にのみ適用されます。Lindorm Serverless はサポートされていません。

操作手順

説明

以下の手順のコードスニペットを使用するか、完全なサンプルコードをダウンロードしてローカルでコンパイルおよび実行できます。このトピックのサンプルコードは、com.aliyun.lindorm.sql.demo.BasicDemo クラスにあります。

  1. Lindorm クライアントをダウンロードします。Maven プロジェクトの場合は、pom.xml ファイルの dependencies セクションに次の依存関係を追加します。

    <dependency> 
      <groupId>com.aliyun.lindorm</groupId>  
      <artifactId>lindorm-all-client</artifactId>
      <version>2.2.1.3</version>
    </dependency>
  2. Lindorm クライアントを初期化し、Lindorm クライアントとデータの間の接続を確立します。

    // LindormTable SQL のエンドポイント。
    String url = "jdbc:lindorm:table:url=http://ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060";
    
    // 接続パラメーターを設定します。
    Properties properties = new Properties();
    
    // Lindorm コンソールから取得したデータベースのユーザー名。
    properties.put("user", "root");
    // Lindorm コンソールから取得したデータベースのパスワード。
    properties.put("password", "test");
    // 接続を確立するときにデータベースを指定します。データベースを指定しない場合は、`default` が使用されます。
    properties.put("database", "default");
    
    // 接続を取得します。
    Connection connection = DriverManager.getConnection(url, properties);
    重要

    サーバーリソースを管理するため、10 分間アイドル状態が続いた Lindorm クライアント接続はサーバーによって自動的に切断されます。この接続を再利用しようとすると、com.aliyun.lindorm.client.shaded.org.apache.calcite.avatica.http.ConnectionDisconnectedException エラーが発生します。この問題を解決するには、接続を再確立する必要があります。

    接続パラメーターは次のとおりです。

    パラメーター

    説明

    url

    jdbc:lindorm:table:url=http://ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060

    Lindorm ワイドテーブルの SQL アドレス。エンドポイントを取得する方法については、「エンドポイントの表示」をご参照ください。

    重要
    • アプリケーションが ECS インスタンスにデプロイされている場合は、セキュリティの向上とネットワーク遅延の低減のために、VPC (Virtual Private Cloud) 経由で Lindorm インスタンスにアクセスします。

    • アプリケーションがローカルにデプロイされている場合は、パブリックネットワーク経由で Lindorm インスタンスに接続する前に、コンソールでパブリックエンドポイントを有効にする必要があります。これを行うには、コンソールで Database Connections > Wide Table Engine を選択します。Wide Table Engine タブで、Enable Public Endpoint をクリックします。

    user

    root

    ユーザーパスワードを忘れた場合は、LindormTable のクラスター管理システムで変更できます。

    password

    test

    database

    default

    接続するデータベースの名前。デフォルトでは、`default` データベースに接続されます。

  3. 接続が確立されたら、LindormTable SQL Java API を使用して Lindorm ワイドテーブルにアクセスします。次のコードに例を示します。

    /* -------------- JDBC ベースの CRUD の例 ----------------- */
    
    String tableName = "sql_table_" + new Random().nextInt(1000);
    // テーブルを作成します。
    try (Statement statement = connection.createStatement()) {
      String sql = "create table if not exists " + tableName + "(id VARCHAR, name VARCHAR, primary key(id))";
      int ret = statement.executeUpdate(sql);
      System.out.println(ret);
    }
    
    // データを挿入します。
    String upsertSql = "upsert into " + tableName + "(id,name) values(?,?)";
    try (PreparedStatement ps = connection.prepareStatement(upsertSql)) {
      int batchSize = 100;
      for (int i = 0; i < batchSize; i++) {
        ps.setString(1, "aa" + i);
        ps.setString(2, "bb" + i);
        // バッチに追加します。
        ps.addBatch();
      }
      // すべての書き込みバッチを実行します。
      // パフォーマンスと安定性のために、バッチを追加しすぎないでください。
      // 1 回の `executeBatch()` 呼び出しで最大数百のバッチを書き込みます。
      int[] ret = ps.executeBatch();
      System.out.println(Arrays.toString(ret));
    }
    
    // データをクエリします。
    String querySql = "select * from " + tableName + " where id=?";
    try (PreparedStatement ps = connection.prepareStatement(querySql)) {
      ps.setString(1, "aa1");
      ResultSet rs = ps.executeQuery();
      while (rs.next()) {
        String id = rs.getString(1);
        String name = rs.getString(2);
        System.out.println("id=" + id);
        System.out.println("name=" + name);
      }
    }
    
    // データを削除します。
    String deleteSql = "delete from " + tableName + " where id=?";
    try (PreparedStatement ps = connection.prepareStatement(deleteSql)) {
      ps.setString(1, "aa1");
      ps.executeUpdate();
    }
    
    // データを更新します。
    // Lindorm SQL の UPDATE 文は単一行の更新のみをサポートし、一括更新はサポートしていません。
    // これは、WHERE 句で完全なプライマリキーを指定する必要があることを意味します。
    String updateSql = "update " + tableName + " set name = ? where id=?";
    try (PreparedStatement ps = connection.prepareStatement(updateSql)) {
      ps.setString(1, "bb2update");
      ps.setString(2, "aa2");
      ps.executeUpdate();
    }
    String querySql1 = "select * from " + tableName + " where id=?";
    try (PreparedStatement ps = connection.prepareStatement(querySql1)) {
      ps.setString(1, "aa2");
      ResultSet rs = ps.executeQuery();
      System.out.println("--------- update-----------");
      while (rs.next()) {
      String id = rs.getString(1);
      String name = rs.getString(2);
      System.out.println("id=" + id);
      System.out.println("name=" + name);
     }
    }
    
    // テーブルを削除します。
    String dropTable = "drop table " + tableName;
    try (Statement stmt = connection.createStatement()) {
      stmt.execute(dropTable);
    }
    
    // 接続を閉じます。操作が完了したら、接続リークを防ぐために必ず接続を閉じてください。
    connection.close();

一般的なフレームワークを使用した LindormTable へのアクセスの例

このセクションでは、さまざまな Java フレームワークを使用して LindormTable にアクセスするためのコード例を示します。

  • Druid フレームワークを使用して LindormTable にアクセスする方法については、「Druid アクセスの例」をご参照ください。

  • Spring フレームワークを使用して LindormTable にアクセスする方法については、「Spring アクセスの例」をご参照ください。

  • Mybatis フレームワークを使用して LindormTable SQL にアクセスする方法については、「Mybatis アクセスの例」をご参照ください。

  • Hibernate フレームワークを使用して LindormTable SQL にアクセスする方法については、「Hibernate アクセスの例」をご参照ください。

参考資料

LindormTable SQLの構文については、「SQL 構文マニュアル」をご参照ください。