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:
JDK 1.8 ou superior instalado
Endereço IP do cliente adicionado à lista de permissões do Lindorm. Consulte Definir uma lista de permissões
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âmetro | Exemplo | Descrição |
|---|---|---|
url | jdbc:lindorm:table:url=http://ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060 | Endereç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. |
user | root | Nome 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. |
password | test | Senha do banco de dados obtida no console do Lindorm. |
database | default | Banco 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.BasicDemo — baixe 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:
Pool de conexões Druid: Exemplo de acesso com Druid
Spring Framework: Exemplo de acesso com Spring
MyBatis: Exemplo de acesso com MyBatis
Hibernate: Exemplo de acesso com Hibernate
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.