Lompati ke konten utama
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Mulai Cepat: Menggunakan Java dan JDBC dengan Azure Database for MySQL
- Artikel
- 10/05/2022
- 13 menit untuk membaca
Dalam artikel ini
BERLAKU UNTUK:
Azure Database for MySQL - Server Tunggal
Penting
Azure Database for MySQL - Server Tunggal berada di jalur penghentian. Kami sangat menyarankan Anda untuk meningkatkan ke Azure Database for MySQL - Server Fleksibel. Untuk informasi selengkapnya tentang
migrasi ke Azure Database for MySQL - Server Fleksibel, lihat Apa yang terjadi pada server tunggal Azure Database for MySQL?
Artikel ini menunjukkan pembuatan aplikasi sampel yang menggunakan Java dan JDBC untuk
menyimpan dan mengambil informasi dalam Azure Database for MySQL.
JDBC adalah API Java standar untuk terhubung ke hubungan database tradisional.
Dalam artikel ini, kami akan menyertakan dua metode autentikasi: Autentikasi Azure Active Directory (Azure AD) dan autentikasi MySQL. Tab Tanpa Kata Sandi memperlihatkan autentikasi Azure AD dan tab
Kata Sandi memperlihatkan autentikasi MySQL.
autentikasi Azure AD adalah mekanisme untuk menyambungkan ke Azure Database for MySQL menggunakan identitas yang ditentukan dalam Azure AD. Dengan autentikasi Azure Active Directory, Anda dapat mengelola identitas pengguna database dan layanan Microsoft lainnya di satu lokasi terpusat, sehingga akan menyederhanakan manajemen izin.
Autentikasi MySQL menggunakan akun yang disimpan di MySQL. Jika Anda memilih untuk
menggunakan kata sandi sebagai kredensial untuk akun, kredensial ini akan disimpan dalam user
tabel. Karena kata sandi ini disimpan di MySQL, Anda harus mengelola rotasi kata sandi sendiri.
Prasyarat
- Akun Azure. Jika Anda tidak memilikinya, dapatkan uji coba gratis.
- Azure Cloud Shell atau CLI Azure. Kami merekomendasikan Azure Cloud Shell sehingga Anda akan masuk secara otomatis dan memiliki akses ke semua alat yang Anda butuhkan.
- Kit Pengembangan Java, yang didukung versi 8 (disertakan dalam Azure Cloud Shell).
- Alat build Apache Maven.
- Klien baris perintah MySQL. Anda dapat tersambung ke server Anda menggunakan alat baris perintah
mysql.exe dengan Azure Cloud Shell. Atau, Anda dapat menggunakan
mysql
baris perintah di lingkungan lokal Anda.
Menyiapkan lingkungan kerja
Pertama, siapkan beberapa variabel lingkungan. Di Azure Cloud Shell, jalankan perintah berikut:
- Tanpa Kata Sandi (Disarankan)
-
Kata sandi
export AZ_RESOURCE_GROUP=database-workshop
export AZ_DATABASE_NAME=
export AZ_LOCATION=
export AZ_MYSQL_AD_NON_ADMIN_USERNAME=demo-non-admin
export AZ_LOCAL_IP_ADDRESS=
export CURRENT_USERNAME=$(az ad signed-in-user show --query userPrincipalName -o tsv)
export CURRENT_USER_OBJECTID=$(az ad signed-in-user show --query id -o tsv)
Ganti tempat penampung dengan nilai berikut, yang digunakan di seluruh artikel ini:
: Nama server MySQL Anda. Ini harus unik di seluruh
Azure.
: Wilayah Azure yang akan Anda gunakan. Anda dapat menggunakan eastus
secara default, tetapi kami menyarankan agar Anda mengonfigurasi wilayah yang lebih dekat ke tempat tinggal Anda. Anda dapat melihat daftar lengkap wilayah yang tersedia dengan memasukkan az account list-locations
.
: Alamat IP komputer lokal tempat Anda akan menjalankan aplikasi Spring Boot Anda. Salah satu cara mudah untuk menemukannya adalah dengan membuka
whatismyip.akamai.com.
export AZ_RESOURCE_GROUP=database-workshop
export AZ_DATABASE_NAME=
export AZ_LOCATION=
export AZ_MYSQL_ADMIN_USERNAME=demo
export AZ_MYSQL_ADMIN_PASSWORD=
export AZ_MYSQL_NON_ADMIN_USERNAME=demo-non-admin
export AZ_MYSQL_NON_ADMIN_PASSWORD=
export AZ_LOCAL_IP_ADDRESS=
Ganti tempat penampung dengan nilai berikut, yang digunakan di seluruh artikel ini:
: Nama server MySQL Anda. Ini harus unik di seluruh Azure.
: Wilayah Azure yang akan Anda gunakan. Anda dapat menggunakan eastus
secara
default, tetapi kami menyarankan agar Anda mengonfigurasi wilayah yang lebih dekat ke tempat tinggal Anda. Anda dapat memiliki daftar lengkap wilayah yang tersedia dengan memasukkan az account list-locations
.
dan
: Kata sandi server database MySQL Anda. Kata sandi itu harus memiliki minimal delapan karakter. Kata sandi Anda harus berisi karakter dari tiga kategori berikut – huruf besar Inggris, huruf kecil Inggris, angka (0-9), dan karakter non-alfanumerik (!, $, #,%, dll.).
:
Alamat IP komputer lokal Anda, tempat Anda akan menjalankan aplikasi Java Anda. Salah satu cara mudah untuk menemukannya adalah dengan membuka whatismyip.akamai.com.
Berikutnya, buat grup sumber daya menggunakan perintah berikut:
az group create \
--name $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION \
--output tsv
Membuat instans Azure Database for MySQL
Membuat server MySQL dan menyiapkan pengguna admin
Hal pertama yang akan Anda buat adalah server MySQL terkelola.
-
Koneksi tanpa kata sandi (Disarankan)
- Kata sandi
Jika Anda menggunakan Azure CLI, jalankan perintah berikut untuk memastikannya memiliki izin yang memadai:
az login --scope https://graph.microsoft.com/.default
Kemudian, jalankan perintah berikut untuk membuat server:
az mysql server create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_DATABASE_NAME \
--location $AZ_LOCATION \
--sku-name B_Gen5_1 \
--storage-size 5120 \
--output tsv
Selanjutnya, jalankan perintah berikut untuk mengatur pengguna admin Azure AD:
az mysql server ad-admin create \
--resource-group $AZ_RESOURCE_GROUP \
--server-name $AZ_DATABASE_NAME \
--display-name $CURRENT_USERNAME \
--object-id $CURRENT_USER_OBJECTID
Penting
Saat mengatur administrator,
pengguna baru ditambahkan ke server Azure Database for MySQL dengan izin administrator penuh. Anda hanya dapat membuat satu admin Azure AD per server MySQL. Pemilihan pengguna lain akan menimpa admin Azure AD yang ada yang dikonfigurasi untuk server.
Perintah ini membuat server MySQL kecil dan mengatur admin Direktori Aktif ke pengguna yang masuk.
az mysql server create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_DATABASE_NAME \
--location $AZ_LOCATION \
--sku-name B_Gen5_1 \
--storage-size 5120 \
--admin-user $AZ_MYSQL_ADMIN_USERNAME \
--admin-password $AZ_MYSQL_ADMIN_PASSWORD \
--output tsv
Perintah
ini membuat server MySQL kecil.
Mengonfigurasi aturan firewall untuk server MySQL Anda
Instans Azure Databases for MySQL diamankan secara default. Instans ini memiliki firewall yang tidak mengizinkan koneksi masuk apa pun. Agar bisa menggunakan database Anda, Anda perlu menambahkan aturan firewall yang akan memungkinkan alamat IP lokal mengakses server database.
Karena Anda mengonfigurasi alamat IP lokal
kami di awal artikel ini, Anda dapat membuka firewall server dengan menjalankan perintah berikut:
az mysql server firewall-rule create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_DATABASE_NAME-database-allow-local-ip \
--server $AZ_DATABASE_NAME \
--start-ip-address $AZ_LOCAL_IP_ADDRESS \
--end-ip-address $AZ_LOCAL_IP_ADDRESS \
--output tsv
Jika Anda menyambungkan ke server MySQL dari Subsistem Windows untuk Linux (WSL) di komputer Windows, Anda harus menambahkan ID host WSL ke firewall Anda.
Dapatkan alamat IP komputer host Anda dengan menjalankan perintah berikut di WSL:
cat /etc/resolv.conf
Salin alamat IP mengikuti istilah nameserver
, lalu gunakan perintah berikut untuk mengatur variabel lingkungan untuk Alamat IP WSL:
AZ_WSL_IP_ADDRESS=
Kemudian, gunakan perintah berikut untuk membuka firewall server ke aplikasi berbasis WSL Anda:
az mysql server firewall-rule create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_DATABASE_NAME-database-allow-local-ip-wsl \
--server $AZ_DATABASE_NAME \
--start-ip-address $AZ_WSL_IP_ADDRESS \
--end-ip-address $AZ_WSL_IP_ADDRESS \
--output tsv
Mengonfigurasi database MySQL
Server MySQL yang Anda buat sebelumnya kosong. Gunakan perintah berikut untuk membuat database baru yang disebut demo
:
az mysql db create \
--resource-group $AZ_RESOURCE_GROUP \
--name demo \
--server-name $AZ_DATABASE_NAME \
--output tsv
Membuat pengguna non-admin MySQL dan memberikan izin
Selanjutnya, buat pengguna non-admin dan berikan semua
izin pada demo
database ke dalamnya.
- Koneksi tanpa kata sandi (Disarankan)
-
Kata sandi
Buat skrip SQL yang disebut create_ad_user.sql untuk membuat pengguna non-admin. Tambahkan konten berikut dan simpan secara lokal:
export AZ_MYSQL_AD_NON_ADMIN_USERID=$CURRENT_USER_OBJECTID
cat << EOF > create_ad_user.sql
SET aad_auth_validate_oids_in_tenant = OFF;
CREATE AADUSER '$AZ_MYSQL_AD_NON_ADMIN_USERNAME' IDENTIFIED BY '$AZ_MYSQL_AD_NON_ADMIN_USERID';
GRANT ALL PRIVILEGES ON demo.* TO '$AZ_MYSQL_AD_NON_ADMIN_USERNAME'@'%';
FLUSH privileges;
EOF
Kemudian,
gunakan perintah berikut untuk menjalankan skrip SQL untuk membuat pengguna non-admin Azure AD:
mysql -h $AZ_DATABASE_NAME.mysql.database.azure.com --user $CURRENT_USERNAME@$AZ_DATABASE_NAME --enable-cleartext-plugin --password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken` < create_ad_user.sql
Sekarang gunakan perintah berikut untuk menghapus file skrip SQL sementara:
rm create_ad_user.sql
Buat skrip SQL yang disebut create_user.sql untuk membuat pengguna non-admin. Tambahkan konten berikut dan simpan secara lokal:
cat << EOF > create_user.sql
CREATE USER '$AZ_MYSQL_NON_ADMIN_USERNAME'@'%' IDENTIFIED BY '$AZ_MYSQL_NON_ADMIN_PASSWORD';
GRANT ALL PRIVILEGES ON demo.* TO '$AZ_MYSQL_NON_ADMIN_USERNAME'@'%';
FLUSH PRIVILEGES;
EOF
Kemudian, gunakan perintah berikut
untuk menjalankan skrip SQL untuk membuat pengguna non-admin Azure AD:
mysql -h $AZ_DATABASE_NAME.mysql.database.azure.com --user $AZ_MYSQL_ADMIN_USERNAME@$AZ_DATABASE_NAME --enable-cleartext-plugin --password=$AZ_MYSQL_ADMIN_PASSWORD < create_user.sql
Sekarang gunakan perintah berikut untuk menghapus file skrip SQL sementara:
rm create_user.sql
Membuat proyek Java baru
Dengan menggunakan IDE favorit Anda, buat proyek Java baru menggunakan Java 8 atau lebih tinggi. Buat file pom.xml di direktori akarnya dan tambahkan konten berikut:
- Koneksi tanpa kata sandi (Disarankan)
-
Kata sandi
4.0.0
com.example
demo
0.0.1-SNAPSHOT
demo
1.8
1.8
1.8
mysql
mysql-connector-java
8.0.30
com.azure
azure-identity-providers-jdbc-mysql
1.0.0-beta.1
4.0.0
com.example
demo
0.0.1-SNAPSHOT
demo
1.8
1.8
1.8
mysql
mysql-connector-java
8.0.30
File ini adalah file
Apache Maven yang mengonfigurasi proyek Anda untuk menggunakan Java 8 dan driver MySQL terbaru untuk Java.
Menyiapkan file konfigurasi untuk menyambungkan ke Azure Database for MySQL
Jalankan skrip berikut di direktori akar proyek untuk membuat file src/main/resources/application.properties dan tambahkan detail
konfigurasi:
- Koneksi tanpa kata sandi (Disarankan)
-
Kata sandi
mkdir -p src/main/resources && touch src/main/resources/application.properties
cat << EOF > src/main/resources/application.properties
url=jdbc:mysql://${AZ_DATABASE_NAME}.mysql.database.azure.com:3306/demo?sslMode=REQUIRED&serverTimezone=UTC&defaultAuthenticationPlugin=com.azure.identity.providers.mysql.AzureIdentityMysqlAuthenticationPlugin&authenticationPlugins=com.azure.identity.providers.mysql.AzureIdentityMysqlAuthenticationPlugin
user=${AZ_MYSQL_AD_NON_ADMIN_USERNAME}@${AZ_DATABASE_NAME}
EOF
mkdir -p src/main/resources && touch src/main/resources/application.properties
cat << EOF > src/main/resources/application.properties
url=jdbc:mysql://${AZ_DATABASE_NAME}.mysql.database.azure.com:3306/demo?useSSL=true&sslMode=REQUIRED&serverTimezone=UTC
user=${AZ_MYSQL_NON_ADMIN_USERNAME}@${AZ_DATABASE_NAME}
password=${AZ_MYSQL_NON_ADMIN_PASSWORD}
EOF
Catatan
Properti
url
konfigurasi telah ?serverTimezone=UTC
ditambahkan untuk memberi tahu driver JDBC untuk menggunakan format tanggal UTC (atau Waktu Universal Terkoordinasi) saat menyambungkan ke database. Jika tidak, server Java Anda tidak akan menggunakan format tanggal yang sama dengan database, yang akan mengakibatkan kesalahan.
Membuat file SQL untuk menghasilkan skema database
Selanjutnya, Anda akan menggunakan file
src/main/resources/schema.sql untuk membuat skema database. Buat file tersebut, lalu tambahkan konten berikut:
touch src/main/resources/schema.sql
cat << EOF > src/main/resources/schema.sql
DROP TABLE IF EXISTS todo;
CREATE TABLE todo (id SERIAL PRIMARY KEY, description VARCHAR(255), details VARCHAR(4096), done BOOLEAN);
EOF
Kode aplikasi
Menyambungkan ke database
Selanjutnya, tambahkan kode Java yang akan menggunakan JDBC untuk menyimpan dan mengambil data server dari MySQL Anda.
Buat file src/main/java/DemoApplication.java dan tambahkan konten berikut:
package com.example.demo;
import com.mysql.cj.jdbc.AbandonedConnectionCleanupThread;
import java.sql.*;
import java.util.*;
import java.util.logging.Logger;
public class DemoApplication {
private static final Logger log;
static {
System.setProperty("java.util.logging.SimpleFormatter.format", "[%4$-7s] %5$s %n");
log =Logger.getLogger(DemoApplication.class.getName());
}
public static void main(String[] args) throws Exception {
log.info("Loading application properties");
Properties properties = new Properties();
properties.load(DemoApplication.class.getClassLoader().getResourceAsStream("application.properties"));
log.info("Connecting to the database");
Connection connection = DriverManager.getConnection(properties.getProperty("url"), properties);
log.info("Database connection test: " + connection.getCatalog());
log.info("Create database schema");
Scanner scanner = new Scanner(DemoApplication.class.getClassLoader().getResourceAsStream("schema.sql"));
Statement statement = connection.createStatement();
while (scanner.hasNextLine()) {
statement.execute(scanner.nextLine());
}
/* Prepare to store and retrieve data from the MySQL server.
Todo todo = new Todo(1L, "configuration", "congratulations, you have set up JDBC correctly!", true);
insertData(todo, connection);
todo = readData(connection);
todo.setDetails("congratulations, you have updated data!");
updateData(todo, connection);
deleteData(todo, connection);
*/
log.info("Closing database connection");
connection.close();
AbandonedConnectionCleanupThread.uncheckedShutdown();
}
}
Kode Java ini akan menggunakan
file application.properties dan schema.sql yang Anda buat sebelumnya. Setelah menyambungkan ke server MySQL, Anda dapat membuat skema untuk menyimpan data Anda.
Dalam file ini, Anda dapat melihat bahwa kami mengomentari metode untuk menyisipkan, membaca, memperbarui, dan menghapus data. Anda akan menerapkan metode tersebut di sisa artikel ini, dan Anda akan dapat membatalkan komentar satu demi satu.
Catatan
Mandat database disimpan di pengguna
dan kata sandi yang merupakan properti dari file application.properties. Mandat tersebut digunakan saat mengeksekusi DriverManager.getConnection(properties.getProperty("url"), properties);
karena file properti diberikan sebagai argumen.
Catatan
Baris AbandonedConnectionCleanupThread.uncheckedShutdown();
di akhir adalah perintah driver MySQL untuk menghancurkan utas internal saat mematikan aplikasi. Anda dapat mengabaikan baris ini dengan aman.
Anda sekarang dapat menjalankan kelas utama ini dengan alat favorit Anda:
- Menggunakan IDE Anda,
Anda akan dapat mengklik kanan pada kelas DemoApplication dan menjalankannya.
- Menggunakan Maven, Anda dapat menjalankan aplikasi dengan perintah berikut:
mvn exec:java -Dexec.mainClass="com.example.demo.DemoApplication"
.
Aplikasi harus terhubung ke Azure Database for MySQL, membuat skema database, lalu menutup koneksi. Anda akan melihat output yang mirip dengan contoh berikut di log konsol:
[INFO ] Loading application properties
[INFO ] Connecting to the database
[INFO ] Database connection test: demo
[INFO ] Create database schema
[INFO ] Closing database connection
Membuat kelas domain
Tambahkan kelas Java Todo
baru, di samping kelas DemoApplication
,
dan tambahkan kode berikut:
package com.example.demo;
public class Todo {
private Long id;
private String description;
private String details;
private boolean done;
public Todo() {
}
public Todo(Long id, String description, String details, boolean done) {
this.id = id;
this.description = description;
this.details = details;
this.done = done;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
public boolean isDone() {
return done;
}
public void setDone(boolean done) {
this.done = done;
}
@Override
public String toString() {
return "Todo{" +
"id=" + id +
", description='" + description + '\'' +
", details='" + details + '\'' +
", done=" + done +
'}';
}
}
Kelas ini adalah model domain yang dipetakan pada tabel todo
yang Anda buat saat menjalankan skrip schema.sql.
Menyisipkan data ke Azure Database for MySQL
Dalam file src/main/java/DemoApplication.java, setelah metode utama, tambahkan metode berikut untuk menyisipkan data ke dalam database:
private static void insertData(Todo todo, Connection connection) throws SQLException {
log.info("Insert data");
PreparedStatement insertStatement = connection
.prepareStatement("INSERT INTO todo (id, description, details, done) VALUES (?, ?, ?, ?);");
insertStatement.setLong(1, todo.getId());
insertStatement.setString(2, todo.getDescription());
insertStatement.setString(3, todo.getDetails());
insertStatement.setBoolean(4, todo.isDone());
insertStatement.executeUpdate();
}
Anda sekarang dapat membatalkan penguraian dua baris berikut di dalam
metode main
:
Todo todo = new Todo(1L, "configuration", "congratulations, you have set up JDBC correctly!", true);
insertData(todo, connection);
Mengeksekusi kelas utama sekarang harus menghasilkan output berikut:
[INFO ] Loading application properties
[INFO ] Connecting to the database
[INFO ] Database connection test: demo
[INFO ] Create database schema
[INFO ] Insert data
[INFO ] Closing database connection
Membaca data dari Azure Database for MySQL
Selanjutnya, baca data yang sebelumnya disisipkan untuk memvalidasi bahwa kode Anda berfungsi dengan benar.
Dalam file src/main/java/DemoApplication.java, setelah metode insertData
, tambahkan metode berikut untuk membaca data dari database:
private static Todo readData(Connection connection) throws SQLException {
log.info("Read data");
PreparedStatement readStatement = connection.prepareStatement("SELECT * FROM todo;");
ResultSet resultSet = readStatement.executeQuery();
if (!resultSet.next()) {
log.info("There is no data in the database!");
return null;
}
Todo todo = new Todo();
todo.setId(resultSet.getLong("id"));
todo.setDescription(resultSet.getString("description"));
todo.setDetails(resultSet.getString("details"));
todo.setDone(resultSet.getBoolean("done"));
log.info("Data read from the database: " + todo.toString());
return todo;
}
Anda sekarang dapat
menghapus komentar pada dua baris berikut di dalam metode main
:
todo = readData(connection);
Mengeksekusi kelas utama sekarang harus menghasilkan output berikut:
[INFO ] Loading application properties
[INFO ] Connecting to the database
[INFO ] Database connection test: demo
[INFO ] Create database schema
[INFO ] Insert data
[INFO ] Read data
[INFO ] Data read from the database: Todo{id=1, description='configuration', details='congratulations, you have set up JDBC correctly!', done=true}
[INFO ] Closing database connection
Memperbarui data di Azure Database for MySQL
Selanjutnya, perbarui data yang sebelumnya Anda sisipkan.
Masih dalam file src/main/java/DemoApplication.java, setelah readData
metode, tambahkan metode berikut untuk memperbarui data di dalam database:
private static void updateData(Todo todo, Connection connection) throws SQLException {
log.info("Update data");
PreparedStatement updateStatement = connection
.prepareStatement("UPDATE todo SET description = ?, details = ?, done = ? WHERE id = ?;");
updateStatement.setString(1, todo.getDescription());
updateStatement.setString(2, todo.getDetails());
updateStatement.setBoolean(3, todo.isDone());
updateStatement.setLong(4, todo.getId());
updateStatement.executeUpdate();
readData(connection);
}
Anda
sekarang dapat membatalkan penguraian dua baris berikut di dalam metode main
:
todo.setDetails("congratulations, you have updated data!");
updateData(todo, connection);
Mengeksekusi kelas utama sekarang harus menghasilkan output berikut:
[INFO ] Loading application properties
[INFO ] Connecting to the database
[INFO ] Database connection test: demo
[INFO ] Create database schema
[INFO ] Insert data
[INFO ] Read data
[INFO ] Data read from the database: Todo{id=1, description='configuration', details='congratulations, you have set up JDBC correctly!', done=true}
[INFO ] Update data
[INFO ] Read data
[INFO ] Data read from the database: Todo{id=1, description='configuration', details='congratulations, you have updated data!', done=true}
[INFO ] Closing database connection
Menghapus data di Azure Database for MySQL
Terakhir, hapus data yang sebelumnya Anda sisipkan.
Masih dalam file src/main/java/DemoApplication.java, setelah metode updateData
, tambahkan metode berikut untuk memperbarui data di dalam database:
private static void deleteData(Todo todo, Connection connection) throws SQLException {
log.info("Delete data");
PreparedStatement deleteStatement = connection.prepareStatement("DELETE FROM todo WHERE id = ?;");
deleteStatement.setLong(1, todo.getId());
deleteStatement.executeUpdate();
readData(connection);
}
Anda
sekarang dapat menghapus komentar pada dua baris berikut di dalam metode main
:
deleteData(todo, connection);
Mengeksekusi kelas utama sekarang harus menghasilkan output berikut:
[INFO ] Loading application properties
[INFO ] Connecting to the database
[INFO ] Database connection test: demo
[INFO ] Create database schema
[INFO ] Insert data
[INFO ] Read data
[INFO ] Data read from the database: Todo{id=1, description='configuration', details='congratulations, you have set up JDBC correctly!', done=true}
[INFO ] Update data
[INFO ] Read data
[INFO ] Data read from the database: Todo{id=1, description='configuration', details='congratulations, you have updated data!', done=true}
[INFO ] Delete data
[INFO ] Read data
[INFO ] There is no data in the database!
[INFO ] Closing database connection
Membersihkan sumber daya
Selamat! Anda telah membuat aplikasi Java yang menggunakan JDBC untuk menyimpan dan mengambil data dari Azure Database for MySQL.
Untuk membersihkan semua sumber daya yang digunakan selama mulai cepat ini, hapus grup sumber daya menggunakan perintah
berikut:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes
Langkah berikutnya