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

Lindorm:Java JDBC APIを使用してアプリケーションを開発する

最終更新日:Jan 21, 2025

このトピックでは、Javaで提供されるJDBC APIを使用してSQLベースのLindormTableアプリケーションを開発する方法について説明し、例を示します。

前提条件

  • Java Development Kit(JDK) V1.8以降がインストールされている。

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

制限事項

このトピックで説明する手順は、Lindorm Serverlessには適用されません。

手順

説明

以下の手順で提供されているサンプルコードを直接使用することも、lindorm-sql-demo.zip からサンプルコードをローカルコンピューターにダウンロードしてコンパイルおよび実行することもできます。 このトピックで提供されているサンプルコードは、com.aliyun.lindorm.sql.demo.BasicDemo クラスに含まれています。

  1. Lindormクライアントをダウンロードします。 たとえば、Mavenプロジェクトの pom.xml ファイルに次の依存関係を追加できます。次のコードは、Lindorm ワイドテーブルにアクセスするために LindormTable SQL の Java API 操作を呼び出す方法の例を示しています。

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

    // SQL を使用して LindormTable に接続して使用する場合に必要なエンドポイント。
    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);
    重要

    Lindormクライアントとサーバー間の接続が 10 分以上アイドル状態の場合、サーバーはリソース使用率を向上させるために接続を閉じます。 接続が閉じられた後に接続を使用すると、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

    SQL を使用して Lindormtable に接続して使用する場合に必要なエンドポイント。 エンドポイントの取得方法の詳細については、「エンドポイントを表示する」をご参照ください。

    重要
    • アプリケーションが ECS インスタンスにデプロイされている場合は、セキュリティの向上とネットワークレイテンシの低減のために、VPC を使用して Lindorm インスタンスに接続することをお勧めします。

    • アプリケーションがローカルサーバーにデプロイされていて、インターネット経由で Lindorm インスタンスに接続する必要がある場合は、Lindorm コンソールでインスタンスのインターネットエンドポイントを有効にするために、次の手順を実行できます。左側のナビゲーションペインで、データベース接続 > ワイドテーブルエンジン を選択します。 ワイドテーブルエンジン タブで、パブリックエンドポイントを有効にする をクリックします。

    user

    root

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

    password

    test

    database

    default

    接続するデータベースの名前。 デフォルトでは、クライアントは default という名前のデータベースに接続されます。

  3. 接続が確立されたら、LindormTable SQL の Java API 操作を呼び出して、Lindorm ワイドテーブルにアクセスします。 次のコードは、Lindorm ワイドテーブルにアクセスするために LindormTable SQL の Java API 操作を呼び出す方法の例を示しています。

    /* -------------- 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();
      }
      // すべてのバッチで書き込み操作を実行します。
      // アプリケーションのパフォーマンスと安定性を確保するために、多数のバッチで同時に書き込み操作を実行しないでください。
      // 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 ステートメントは、一度に 1 行のデータのみを更新でき、バッチデータの更新はサポートしていません。
    // したがって、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 に接続するために使用できるサンプルコードを含むウェブページへの関連リンクを提供します。

参考資料

LindormTable でサポートされている SQL 構文の詳細については、「SQL リファレンス」をご参照ください。