Todos os produtos
Search
Central de documentação

Lindorm:Desenvolvimento de aplicações com a interface Java JDBC

Última atualização: Jun 28, 2026

Use a interface padrão Java Database Connectivity (JDBC) para conectar sua aplicação Java ao LindormTable e executar operações SQL em wide tables.

Pré-requisitos

Antes de começar, verifique se os seguintes requisitos foram atendidos:

Limitações

Este tópico aplica-se exclusivamente ao Lindorm no modo wide table. O Lindorm Serverless não tem suporte.

Adicionar a dependência Maven

Em projetos Maven, adicione o trecho abaixo à seção dependencies do arquivo pom.xml:

<dependency>
  <groupId>com.aliyun.lindorm</groupId>
  <artifactId>lindorm-all-client</artifactId>
  <version>2.2.1.3</version>
</dependency>

Conectar ao LindormTable

Use DriverManager.getConnection() para estabelecer a conexão.

// Lindorm Wide Table SQL endpoint — obtain from the Lindorm console.
// See: View endpoints
String url = "jdbc:lindorm:table:url=http://<your-endpoint>:30060";

Properties properties = new Properties();
// The database username obtained from the Lindorm console.
properties.put("user", "root");
// The database password obtained from the Lindorm console.
properties.put("password", "test");
// The database to connect to. Defaults to "default" if not specified.
properties.put("database", "default");

Connection connection = DriverManager.getConnection(url, properties);

Parâmetros de conexão

ParâmetroExemploDescrição
urljdbc:lindorm:table:url=http://ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060Endereço SQL do Lindorm Wide Table. Obtenha o endpoint em Visualize endpoints no console do Lindorm. Se a aplicação estiver em uma instância ECS, use o endpoint da virtual private cloud (VPC) para garantir menor latência e maior segurança. Para desenvolvimento local, ative primeiro um endpoint público: no console, acesse Database Connections > Wide Table Engine e clique em Enable Public Endpoint.
userrootNome de usuário do banco de dados obtido no console do Lindorm. Caso tenha esquecido a senha, redefina-a pelo sistema de gerenciamento de cluster do LindormTable.
passwordtestSenha do banco de dados obtida no console do Lindorm.
databasedefaultBanco de dados de destino. O valor padrão é default.

Gerenciamento de conexões

O servidor encerra conexões inativas por mais de 10 minutos. Ao tentar reutilizar uma conexão fechada, o sistema lança o erro com.aliyun.lindorm.client.shaded.org.apache.calcite.avatica.http.ConnectionDisconnectedException. Nesse caso, restabeleça a conexão.

Em ambientes de produção, use um pool de conexões (como Druid) configurado com keepalive ou validação para evitar que timeouts de inatividade gerem erros na aplicação.

Executar operações CRUD

O exemplo a seguir demonstra o ciclo completo de criação, leitura, atualização e exclusão (CRUD). O código-fonte executável está disponível na classe com.aliyun.lindorm.sql.demo.BasicDemobaixe o código de exemplo.

String tableName = "sql_table_" + new Random().nextInt(1000);

// Create a table.
// The CREATE TABLE statement creates a wide table by default.
try (Statement statement = connection.createStatement()) {
    String sql = "create table if not exists " + tableName
        + "(id VARCHAR, name VARCHAR, primary key(id))";
    statement.executeUpdate(sql);
}

// Insert data using batch upsert.
// Keep individual batches to hundreds of rows — large batches degrade performance.
String upsertSql = "upsert into " + tableName + "(id, name) values(?, ?)";
try (PreparedStatement ps = connection.prepareStatement(upsertSql)) {
    for (int i = 0; i < 100; i++) {
        ps.setString(1, "aa" + i);
        ps.setString(2, "bb" + i);
        ps.addBatch();
    }
    ps.executeBatch();
}

// Query data.
String querySql = "select * from " + tableName + " where id=?";
try (PreparedStatement ps = connection.prepareStatement(querySql)) {
    ps.setString(1, "aa1");
    ResultSet rs = ps.executeQuery();
    while (rs.next()) {
        System.out.println("id=" + rs.getString(1));
        System.out.println("name=" + rs.getString(2));
    }
}

// Delete a row.
String deleteSql = "delete from " + tableName + " where id=?";
try (PreparedStatement ps = connection.prepareStatement(deleteSql)) {
    ps.setString(1, "aa1");
    ps.executeUpdate();
}

// Update a row.
// LindormTable UPDATE supports only single-row updates, not batch updates.
// The WHERE clause must include the full primary key.
String updateSql = "update " + tableName + " set name=? where id=?";
try (PreparedStatement ps = connection.prepareStatement(updateSql)) {
    ps.setString(1, "bb2update");
    ps.setString(2, "aa2");
    ps.executeUpdate();
}

// Drop the table.
try (Statement stmt = connection.createStatement()) {
    stmt.execute("drop table " + tableName);
}

// Always close the connection after use to prevent connection leaks.
connection.close();

Usar o LindormTable com frameworks Java

Caso prefira usar um framework Java de alto nível, consulte os exemplos abaixo:

Perguntas frequentes

Por que o UPDATE exige a chave primária completa na cláusula WHERE?

O comando UPDATE do LindormTable aceita apenas atualizações de linha única. A cláusula WHERE deve especificar a chave primária completa. Para chaves primárias compostas, inclua todas as colunas da chave na cláusula WHERE.

Qual sintaxe SQL o LindormTable suporta?

Consulte o Manual de sintaxe SQL para obter a referência completa.

Referências

Para obter informações sobre a sintaxe SQL do LindormTable, consulte o Manual de Sintaxe SQL.