Tüm Ürünler
Search
Belge Merkezi

Lindorm:Use Java JDBC APIs to develop applications

Son Güncelleme:Oct 07, 2026

Java Database Connectivity (JDBC), veritabanlarına bağlanmak ve bunları yönetmek için kullanılan standart bir Java API'sidir. Bu konu, MySQL JDBC sürücüsünü kullanarak MySQL protokolü üzerinden LindormTable'a nasıl bağlanılacağını ve Lindorm SQL ile CRUD işlemlerinin nasıl yürütüleceğini gösterir.

Çalışma mantığı

  1. Projenize MySQL JDBC sürücü bağımlılığını ekleyin.

  2. Sürücüyü başlatın ve LindormTable'ın MySQL uyumlu uç noktasını hedefleyen bir JDBC URL'si kullanarak bağlantı kurun.

  3. Tablolar oluşturmak, veri yazmak, sorgulamak ve kayıtları silmek için Lindorm SQL ile standart JDBC API'lerini kullanın.

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

Adım 1: MySQL JDBC sürücüsünü ekleme

Maven projesi için, pom.xml dosyasındaki dependencies bölümüne aşağıdaki bağımlılığı ekleyin:

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.3.0</version>
</dependency>

Gradle projesi için, build.gradle dosyanıza aşağıdakileri ekleyin:

implementation 'com.mysql:mysql-connector-j:8.3.0'
Önemli

MySQL JDBC sürücü sürümü olarak 8,0 veya üzerini kullanın. Maven/Gradle dışı projeler için, mysql-connector-java-x.x.x.jar dosyasını CLASSPATH'inize manuel olarak eklemeniz gerekir; aksi takdirde bağlantı başarısız olur.

Adım 2: LindormTable'a bağlanma

MySQL JDBC sürücüsünü başlatın ve bir bağlantı kurun:

Class.forName("com.mysql.cj.jdbc.Driver");

// The database username from the Lindorm console.
String username = "root";
// The database password from the Lindorm console.
String password = "root";
// Specify the database to connect to. If omitted, the default database is used.
String database = "default";
// The LindormTable endpoint for MySQL. Port 33060 is fixed and must not be changed.
// Replace the hostname with your actual MySQL-compatible endpoint.
String url = "jdbc:mysql://ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com:33060/"
    + database
    + "?sslMode=disabled"
    + "&allowPublicKeyRetrieval=true"
    + "&useServerPrepStmts=true"
    + "&useLocalSessionState=true"
    + "&rewriteBatchedStatements=true"
    + "&cachePrepStmts=true"
    + "&prepStmtCacheSize=100"
    + "&prepStmtCacheSqlLimit=50000000";

Properties properties = new Properties();
properties.put("user", username);
properties.put("password", password);

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

Bağlantı parametreleri

Parametre Açıklama
url MySQL üzerinden LindormTable için JDBC URL'si. Biçim: jdbc:mysql://<MySQL uyumlu uç nokta>/<veritabanı>?<bağlantı ayarları>. Veritabanı belirtilmezse istemci varsayılan veritabanına bağlanır. MySQL uyumlu uç noktayı almak için bkz. Uç noktaları görüntüleme.
database Bağlanılacak veritabanı. Belirtilmezse varsayılan veritabanına bağlanır.
username LindormTable kullanıcı adı. Unutulan bir parolayı sıfırlamak için bkz. Kullanıcı parolasını değiştirme.
password LindormTable parolası.
Önemli

Uç noktayı, istemcinizin Lindorm örneğine erişim şekline göre seçin:

  • Virtual Private Cloud (VPC) (önerilen): MySQL uyumlu VPC adresini kullanın. Elastic Compute Service (ECS) örneklerinde çalışan uygulamalar, VPC bağlantısı sayesinde daha düşük gecikme süresi ve daha yüksek güvenlikten yararlanır.

  • Genel ağ: Lindorm konsolunda genel uç noktayı etkinleştirin ve MySQL uyumlu İnternet adresini kullanın. Bkz. LindormTable uç noktalarını görüntüleme.

Bağlantı ayarları

URL'deki tüm bağlantı ayarları gereklidir. Aşağıdaki tabloda her bir ayar açıklanmıştır:

Parametre Değer Açıklama
sslMode disabled SSL şifrelemesini devre dışı bırakır. Performansı artırır.
allowPublicKeyRetrieval true Kimlik doğrulama sırasında RSA genel anahtarını sunucudan alır.
useServerPrepStmts true Sunucu tarafında hazırlanmış deyimler kullanır, performansı artırır ve SQL enjeksiyonu riskini azaltır.
useLocalSessionState true Veritabanı sunucusuna giden gidiş-dönüş trafiğini azaltmak için yerel oturum durumunu kullanır.
rewriteBatchedStatements true Toplu INSERT çağrılarını çok satırlı deyimlere dönüştürerek yazma performansını büyük ölçüde artırır. Örneğin, üç ayrı ekleme işlemi tek bir deyim olarak gönderilir: INSERT INTO t (a) VALUES (1), (2), (3) şeklinde; üç ayrı INSERT INTO t (a) VALUES (?) çağrısı yerine.
cachePrepStmts true Hazırlanmış deyimleri istemcide önbelleğe alır, sık yürütülen deyimler için oluşturma ek yükünü azaltır.
prepStmtCacheSize 100 Önbelleğe alınan hazırlanmış deyim sayısı. Yalnızca cachePrepStmts=true olduğunda etkili olur. İş yükünüz çok sayıda farklı SQL deyimi kullanıyorsa bu değeri artırın; ancak daha büyük bir önbelleğin daha fazla bellek tükettiğini unutmayın.
prepStmtCacheSqlLimit 50000000 Önbelleğe alınmaya uygun SQL deyimlerinin maksimum bayt uzunluğu. Bu değerden uzun deyimler önbelleğe alınmaz. Uzun SQL deyimleri içeren ve performans hassasiyeti olan iş yükleri için bu değeri artırın.

Adım 3: SQL işlemlerini çalıştırma

Bağlantı kurulduktan sonra, tablolar oluşturmak, veri eklemek, sorgulamak ve silmek için Lindorm SQL'i kullanın:

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

// Create a table.
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);
}

// Insert data in a batch. Use INSERT — in Lindorm SQL, INSERT has UPSERT semantics.
String upsertSql = "INSERT 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();
    }
    int[] ret = ps.executeBatch();
    System.out.println(Arrays.toString(ret));
}

// 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()) {
        String id = rs.getString(1);
        String name = rs.getString(2);
        System.out.println("id=" + id);
        System.out.println("name=" + name);
    }
}

// Delete data.
String deleteSql = "DELETE FROM " + tableName + " WHERE id = ?";
try (PreparedStatement ps = connection.prepareStatement(deleteSql)) {
    ps.setString(1, "aa1");
    ps.executeUpdate();
}

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

Tam Lindorm SQL sözdizimi referansı için bkz. SQL referansı.

Kullanım notları

INSERT ve UPSERT anlamları

Lindorm SQL'de INSERT deyimi, UPSERT ile aynı anlama gelir. MySQL JDBC istemcisi INSERT deyimlerini optimize eder, bu nedenle tüm veri yazma işlemleri için INSERT kullanın.

Toplu yazma boyutu

Toplu yazma işlemleri, uzak yordam çağrısı (RPC) ek yükünü azaltır ve sunucunun her istekte birden fazla satırı işlemesine olanak tanır; bu da tek satırlı yazmalara kıyasla aktarım hızını artırır. Ancak, çok büyük toplu işler bellek yetersizliği (OOM) hatalarına veya tam çöp toplama (Full GC) duraklamalarına neden olabilir; bu durum hizmet kararlılığını düşürür. batchSize değerini 50 ile 100 satır arasında tutun. Genel yazma aktarım hızını artırmak için toplu iş boyutu yerine yazma eşzamanlılığını artırın.

Sonraki adımlar