Mulai cepat: Menggunakan Azure Cosmos DB untuk NoSQL dengan Azure SDK untuk Java
Dalam mulai cepat ini, Anda menyebarkan aplikasi Azure Cosmos DB for Table dasar menggunakan Azure SDK untuk Java. Azure Cosmos DB for Table adalah penyimpanan data tanpa skema yang memungkinkan aplikasi menyimpan data tabel terstruktur di cloud. Anda mempelajari cara membuat tabel, baris, dan melakukan tugas dasar dalam sumber daya Azure Cosmos DB Anda menggunakan Azure SDK untuk Java.
Dokumentasi | referensi API Paket kode | sumber pustaka (Maven) | Azure Developer CLI
Prasyarat
- Azure Developer CLI
- Desktop Docker
- Java 21
Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
Menginisialisasi proyek
Gunakan Azure Developer CLI (azd
) untuk membuat akun Azure Cosmos DB for Table dan menyebarkan aplikasi sampel kontainer. Aplikasi sampel menggunakan pustaka klien untuk mengelola, membuat, membaca, dan mengkueri data sampel.
Buka terminal di direktori kosong.
Jika Anda belum diautentikasi, autentikasi ke Azure Developer CLI menggunakan
azd auth login
. Ikuti langkah-langkah yang ditentukan oleh alat untuk mengautentikasi ke CLI menggunakan kredensial Azure pilihan Anda.azd auth login
Gunakan
azd init
untuk menginisialisasi proyek.azd init --template cosmos-db-nosql-java-quickstart
Selama inisialisasi, konfigurasikan nama lingkungan yang unik.
Sebarkan akun Azure Cosmos DB menggunakan
azd up
. Templat Bicep juga menyebarkan aplikasi web sampel.azd up
Selama proses provisi, pilih langganan Anda, lokasi yang diinginkan, dan grup sumber daya target. Tunggu hingga proses provisi selesai. Prosesnya dapat memakan waktu sekitar lima menit.
Setelah provisi sumber daya Azure Anda selesai, URL ke aplikasi web yang sedang berjalan disertakan dalam output.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
Gunakan URL di konsol untuk menavigasi ke aplikasi web Anda di browser. Amati output aplikasi yang sedang berjalan.
Memasang pustaka klien
Pustaka klien tersedia melalui Maven, sebagai azure-spring-data-cosmos
paket.
Navigasi ke
/src/web
folder dan buka file pom.xml .Jika belum ada, tambahkan entri untuk
azure-spring-data-cosmos
paket.<dependency> <groupId>com.azure</groupId> <artifactId>azure-spring-data-cosmos</artifactId> </dependency>
Selain itu, tambahkan dependensi lain untuk
azure-identity
paket jika belum ada.<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> </dependency>
Model objek
Nama | Deskripsi |
---|---|
EnableCosmosRepositories |
Jenis ini adalah dekorator metode yang digunakan untuk mengonfigurasi repositori untuk mengakses Azure Cosmos DB untuk NoSQL. |
CosmosRepository |
Kelas ini adalah kelas klien utama dan digunakan untuk mengelola data dalam kontainer. |
CosmosClientBuilder |
Kelas ini adalah pabrik yang digunakan untuk membuat klien yang digunakan oleh repositori. |
Query |
Jenis ini adalah dekorator metode yang digunakan untuk menentukan kueri yang dijalankan repositori. |
Contoh kode
- Autentikasi klien
- Mendapatkan database
- Mendapatkan kontainer
- Membuat item
- Mendapatkan item
- Item kueri
Kode sampel dalam templat menggunakan database bernama cosmicworks
dan kontainer bernama products
. Kontainer products
berisi detail seperti nama, kategori, kuantitas, pengidentifikasi unik, dan bendera penjualan untuk setiap produk. Kontainer menggunakan /category
properti sebagai kunci partisi logis.
Mengautentikasi klien
Pertama, sampel ini membuat kelas baru yang mewarisi AbstractCosmosConfiguration
untuk mengonfigurasi koneksi ke Azure Cosmos DB untuk NoSQL.
@Configuration
@EnableCosmosRepositories
public class CosmosConfiguration extends AbstractCosmosConfiguration {
}
Dalam kelas konfigurasi, sampel ini membuat instans CosmosClientBuilder
baru kelas dan mengonfigurasi autentikasi menggunakan DefaultAzureCredential
instans.
@Bean
public CosmosClientBuilder getCosmosClientBuilder() {
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.build();
return new CosmosClientBuilder()
.endpoint("<azure-cosmos-db-nosql-account-endpoint>")
.credential(credential);
}
Mendapatkan database
Di kelas konfigurasi, sampel mengimplementasikan metode untuk mengembalikan nama database yang ada bernama cosmicworks
.
@Override
protected String getDatabaseName() {
return "cosmicworks";
}
Mendapatkan kontainer
Container
Gunakan dekorator metode untuk mengonfigurasi kelas untuk mewakili item dalam kontainer. Tulis kelas untuk menyertakan semua anggota yang ingin Anda serialkan ke dalam JSON. Dalam contoh ini, jenis memiliki pengidentifikasi unik, dan bidang untuk kategori, nama, kuantitas, harga, dan izin.
@Container(containerName = "products", autoCreateContainer = false)
public class Item {
private String id;
private String name;
private Integer quantity;
private Boolean sale;
@PartitionKey
private String category;
// Extra members omitted for brevity
}
Membuat item
Buat item dalam kontainer menggunakan repository.save
.
Item item = new Item(
"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"gear-surf-surfboards",
"Yamba Surfboard",
12,
false
);
Item created_item = repository.save(item);
Baca item
Lakukan operasi baca titik dengan menggunakan bidang pengidentifikasi unik (id
) dan kunci partisi. Gunakan repository.findById
untuk mengambil item tertentu secara efisien.
PartitionKey partitionKey = new PartitionKey("gear-surf-surfboards");
Optional<Item> existing_item = repository.findById("aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", partitionKey);
if (existing_item.isPresent()) {
// Do something
}
Buat kueri item
Lakukan kueri atas beberapa item dalam kontainer dengan menentukan kueri di antarmuka repositori. Sampel ini menggunakan Query
dekorator metode untuk menentukan metode yang menjalankan kueri berparameter ini:
SELECT * FROM products p WHERE p.category = @category
@Repository
public interface ItemRepository extends CosmosRepository<Item, String> {
@Query("SELECT * FROM products p WHERE p.category = @category")
List<Item> getItemsByCategory(@Param("category") String category);
}
Ambil semua hasil kueri menggunakan repository.getItemsByCategory
. Mengulangi hasil kueri.
List<Item> items = repository.getItemsByCategory("gear-surf-surfboards");
for (Item item : items) {
// Do something
}
Membersihkan sumber daya
Saat Anda tidak lagi memerlukan aplikasi sampel atau sumber daya, hapus penyebaran dan semua sumber daya yang sesuai.
azd down