Bagikan melalui


Mulai cepat: Menggunakan Azure Cosmos DB untuk NoSQL dengan Azure SDK untuk Java

Dalam panduan cepat ini, Anda akan melakukan penyebaran Azure Cosmos DB dasar untuk aplikasi NoSQL menggunakan Azure SDK untuk Java. Azure Cosmos DB for NoSQL adalah penyimpanan data tanpa skema yang memungkinkan aplikasi menyimpan data yang tidak terstruktur di cloud. Kueri data dalam kontainer Anda dan lakukan operasi umum pada item individual menggunakan Azure SDK untuk Java.

Dokumentasi referensi API | Kode sumber pustaka | Paket (Maven) | Azure Developer CLI

Prasyarat

  • Azure Developer CLI
  • ** Docker Desktop
  • Java 21

Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.

Menginisialisasi proyek

Gunakan Azure Developer CLI (azd) untuk membuat azure Cosmos DB untuk akun NoSQL dan menyebarkan aplikasi sampel dalam kontainer. Aplikasi sampel menggunakan pustaka klien untuk mengelola, membuat, membaca, dan mengkueri data sampel.

  1. Buka terminal di direktori kosong.

  2. 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
    
  3. Gunakan azd init untuk menginisialisasi proyek.

    azd init --template cosmos-db-nosql-java-quickstart
    
  4. Selama inisialisasi, konfigurasikan nama lingkungan yang unik.

  5. Sebarkan akun Azure Cosmos DB menggunakan azd up. Templat Bicep juga menyebarkan aplikasi web sampel.

    azd up
    
  6. 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.

  7. 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.
    
  8. Gunakan URL di konsol untuk menavigasi ke aplikasi web Anda di browser. Amati output aplikasi yang sedang berjalan.

Cuplikan layar aplikasi web yang sedang berjalan.

Memasang pustaka klien

Pustaka klien tersedia melalui Maven, sebagai paket azure-spring-data-cosmos.

  1. Navigasi ke /src/web folder dan buka file pom.xml .

  2. Jika belum ada, tambahkan entri untuk azure-spring-data-cosmos paket.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-spring-data-cosmos</artifactId>
    </dependency>
    
  3. Selain itu, tambahkan dependensi lain untuk azure-identity paket jika belum ada.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
    </dependency>
    

Mengimpor pustaka

Impor semua namespace yang diperlukan ke dalam kode aplikasi Anda.

import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.models.PartitionKey;
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.spring.data.cosmos.config.AbstractCosmosConfiguration;
import com.azure.spring.data.cosmos.config.CosmosConfig;
import com.azure.spring.data.cosmos.core.mapping.Container;
import com.azure.spring.data.cosmos.core.mapping.PartitionKey;
import com.azure.spring.data.cosmos.repository.CosmosRepository;
import com.azure.spring.data.cosmos.repository.Query;
import com.azure.spring.data.cosmos.repository.config.EnableCosmosRepositories;

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 fabrik yang digunakan untuk membuat klien yang digunakan oleh repositori.
Query Tipe ini adalah dekorator metode yang digunakan untuk menentukan kueri yang dijalankan oleh repositori.

Contoh kode

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 baru dari kelas CosmosClientBuilder dan mengonfigurasi autentikasi menggunakan instans DefaultAzureCredential.

@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";
}

Dapatkan 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 barang

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);

Bacalah sebuah barang

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. Memeriksa satu per satu hasil kueri.

List<Item> items = repository.getItemsByCategory("gear-surf-surfboards");
for (Item item : items) {
    // Do something
}

Jelajahi sampel Anda

Gunakan ekstensi Visual Studio Code untuk Azure Cosmos DB untuk menjelajahi data NoSQL Anda. Anda dapat melakukan operasi database inti termasuk, tetapi tidak terbatas pada:

  • Melakukan kueri menggunakan buku catatan atau editor kueri
  • Memodifikasi, memperbarui, membuat, dan menghapus item
  • Mengimpor data massal dari sumber lain
  • Mengelola database dan kontainer

Untuk informasi selengkapnya, lihat Panduan menggunakan ekstensi Visual Studio Code untuk menjelajahi Azure Cosmos DB untuk data NoSQL.

Membersihkan sumber daya

Saat Anda tidak lagi memerlukan aplikasi contoh atau sumber daya, hapus penerapan dan semua sumber daya yang terkait.

azd down