All Products
Search
Document Center

Lindorm:Gunakan API Java JDBC untuk mengembangkan aplikasi

Last Updated:Feb 11, 2026

Java Database Connectivity (JDBC) adalah API Java standar untuk menghubungkan dan mengelola database serta mengeksekusi pernyataan SQL. Anda dapat menggunakan API Java JDBC untuk menghubungkan ke LindormTable dan mengembangkan aplikasi dengan Lindorm SQL. Topik ini menjelaskan cara mengembangkan aplikasi menggunakan API Java JDBC melalui protokol MySQL.

Prasyarat

  • Fitur kompatibilitas MySQL telah diaktifkan untuk instans Anda. Untuk informasi selengkapnya, lihat Aktifkan fitur kompatibilitas MySQL.

  • Anda harus menginstal lingkungan Java; diperlukan JDK 1.8 atau versi yang lebih baru.

  • Alamat IP klien Anda telah ditambahkan ke daftar putih instans Lindorm Anda. Untuk informasi selengkapnya, lihat Konfigurasikan daftar putih.

Prosedur

  1. Tambahkan dependensi driver JDBC MySQL. Untuk proyek Maven, tambahkan dependensi tersebut ke bagian dependencies dalam file pom.xml. Contoh:

      <dependency>
          <groupId>com.mysql</groupId>
          <artifactId>mysql-connector-j</artifactId>
          <version>8.3.0</version>
      </dependency>
    Penting
    • Kami merekomendasikan penggunaan driver JDBC MySQL versi 8.0 atau yang lebih baru untuk menghubungkan ke LindormTable.

    • Untuk membuat koneksi JDBC MySQL di Java, tambahkan secara manual file JAR driver JDBC MySQL (mysql-connector-java-x.x.x.jar) ke CLASSPATH Anda. Jika tidak, koneksi akan gagal.

  2. Inisialisasi klien JDBC MySQL dan buat koneksi antara klien Anda dan data LindormTable.

    Class.forName("com.mysql.cj.jdbc.Driver");
    
    // Username database dari Konsol Lindorm.
    String username = "root";
    // Password database dari Konsol Lindorm.
    String password = "root";
    // Tentukan database yang akan dihubungkan. Jika diabaikan, database default akan digunakan.
    String database = "default";
    // Titik akhir LindormTable untuk MySQL. Port 33060 bersifat tetap untuk MySQL dan tidak boleh diubah. Ganti database dengan nama database target Anda. Biarkan parameter lain tidak berubah untuk meningkatkan performa.
    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);
    
    // Dapatkan koneksi.
    Connection connection = DriverManager.getConnection(url, properties);

    Parameter

    Parameter

    Deskripsi

    url

    URL JDBC untuk menghubungkan ke LindormTable melalui MySQL. Format: jdbc:mysql://<titik akhir kompatibel MySQL>/<nama database>?<pengaturan koneksi>.

    Jika nama database tidak ditentukan, client akan terhubung ke database default. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir kompatibel MySQL, lihat Lihat titik akhir.

    Pengaturan koneksi meningkatkan performa. Tentukan semua pengaturan tersebut. Untuk detailnya, lihat Pengaturan koneksi.

    Penting
    • Jika aplikasi Anda berjalan pada instance ECS, gunakan VPC untuk mengakses instans Lindorm demi keamanan yang lebih tinggi dan latensi jaringan yang lebih rendah.

    • Jika aplikasi Anda berjalan pada mesin lokal dan memerlukan akses Internet ke instans Lindorm, aktifkan titik akhir publik di Konsol Lindorm. Untuk informasi selengkapnya, lihat Lihat titik akhir LindormTable.

    • Jika Anda terhubung melalui VPC, tentukan alamat VPC kompatibel MySQL untuk url. Jika Anda terhubung melalui jaringan publik, tentukan alamat Internet kompatibel MySQL untuk url.

    database

    Nama database yang akan dihubungkan. Secara default, client terhubung ke database default.

    username

    Username dan password untuk menghubungkan ke LindormTable.

    Jika Anda lupa password, ubah di sistem manajemen kluster LindormTable. Untuk informasi selengkapnya, lihat Ubah password pengguna.

    password

    Pengaturan koneksi

    Parameter

    Nilai contoh

    Deskripsi

    sslMode

    disabled

    Menentukan apakah driver JDBC menggunakan SSL untuk membuat koneksi terenkripsi. Kami merekomendasikan Anda menyetel parameter ini ke disabled. Menyetel parameter ini ke disabled mencegah penggunaan SSL untuk koneksi terenkripsi dan meningkatkan performa.

    allowPublicKeyRetrieval

    true

    Apakah kunci publik RSA diambil dari server selama otentikasi. Setel ke true.

    useServerPrepStmts

    true

    Apakah menggunakan prepared statement di sisi server. Setel ke true agar database menggunakan preprocessing SQL bawaannya, meningkatkan performa dan mengurangi risiko injeksi SQL.

    useLocalSessionState

    true

    Apakah menggunakan status sesi lokal untuk mengurangi round-trip ke server database. Setel ke true.

    rewriteBatchedStatements

    true

    Apakah menulis ulang pernyataan batch. Setel ke true untuk meningkatkan performa penulisan secara signifikan pada aplikasi yang menggunakan prepared statement dengan binding parameter batch.

    cachePrepStmts

    true

    Apakah menyimpan prepared statement dalam cache. Setel ke true untuk mengurangi overhead pembuatan dan meningkatkan performa pada pernyataan yang sering dieksekusi.

    prepStmtCacheSize

    100

    Jumlah prepared statement yang disimpan dalam cache oleh driver JDBC. Pengaturan ini hanya berlaku jika cachePrepStmts disetel ke true.

    Catatan

    Nilai prepStmtCacheSize yang lebih besar mengonsumsi lebih banyak memori. Tetapkan nilai ini sesuai kebutuhan aktual Anda. Tingkatkan jika workload Anda memerlukan performa tinggi.

    prepStmtCacheSqlLimit

    500000

    Menentukan panjang maksimum prepared statement yang dapat disimpan dalam cache. Pernyataan SQL yang melebihi panjang ini tidak akan dicache. Jika bisnis Anda sensitif terhadap performa, kami merekomendasikan Anda menaikkan nilai parameter ini.

  3. Setelah koneksi berhasil dibuat, gunakan sintaks SQL LindormTable. Contoh:

    String tableName = "sql_table_" + new Random().nextInt(1000);
    // Buat tabel.
    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);
    }
    
    // Masukkan data.
    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);
        // Tambahkan ke batch.
        ps.addBatch();
      }
      int[] ret = ps.executeBatch();
      System.out.println(Arrays.toString(ret));
    }
    
    // Kueri 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);
      }
    }
    
    // Hapus data.
    String deleteSql = "delete from " + tableName + " where id=?";
    try (PreparedStatement ps = connection.prepareStatement(deleteSql)) {
      ps.setString(1, "aa1");
      ps.executeUpdate();
    }
    
    // Tutup koneksi. Selalu tutup koneksi setelah menyelesaikan operasi untuk mencegah kebocoran.
    connection.close();

    Untuk informasi selengkapnya tentang sintaks SQL LindormTable, lihat Referensi SQL.

    Catatan
    • Dalam Lindorm SQL, INSERT memiliki semantik yang sama dengan UPSERT. Karena klien JDBC MySQL mengoptimalkan INSERT, gunakan INSERT untuk penulisan data.

    • Penulisan batch mengurangi jumlah panggilan RPC dibandingkan penulisan baris tunggal. Server memproses baris dalam batch, sehingga mencapai throughput yang lebih tinggi. Namun, jumlah baris per batch yang terlalu banyak dapat menyebabkan error kehabisan memori (OOM) atau garbage collection penuh (Full GC), yang berdampak pada stabilitas layanan. Kendalikan ukuran batch. batchSize adalah jumlah baris per batch. Tetapkan antara 50 hingga 100.

    • Tingkatkan throughput penulisan dengan meningkatkan konkurensi penulisan.