Mengakses data dengan Azure Cosmos DB NoSQL API

Artikel ini memperlihatkan kepada Anda cara menambahkan Spring Cloud Azure Starter untuk Spring Data untuk Azure Cosmos DB ke aplikasi kustom. Starter ini memungkinkan Anda menyimpan data dan mengambil data dari database Azure Cosmos DB Anda dengan menggunakan Spring Data dan Azure Cosmos DB for NoSQL. Artikel ini dimulai dengan menunjukkan kepada Anda cara membuat Azure Cosmos DB melalui portal Azure. Kemudian, artikel ini menunjukkan kepada Anda cara menggunakan Spring Initializr untuk membuat aplikasi Spring Boot kustom yang dapat Anda gunakan dengan Spring Boot Starter.

Azure Cosmos DB adalah layanan database yang didistribusikan secara global yang memungkinkan pengembang untuk bekerja dengan data menggunakan berbagai API standar, seperti SQL, MongoDB, Graph, dan API Tabel. Spring Boot Starter Microsoft memungkinkan pengembang untuk menggunakan aplikasi Spring Boot yang dengan mudah diintegrasikan dengan Azure Cosmos DB untuk NoSQL.

Prasyarat

Membuat Azure Cosmos DB dengan menggunakan portal Azure

Gunakan langkah-langkah berikut untuk membuat instans Azure Cosmos DB:

  1. Telusuri ke portal Azure dan pilih Buat sumber daya.

  2. Pilih Database, lalu pilih Azure Cosmos DB.

  3. Pada layar Buat akun Azure Cosmos DB, pilih Azure Cosmos DB untuk NoSQL.

    Cuplikan layar portal Azure yang memperlihatkan halaman Buat akun Azure Cosmos DB dengan opsi Azure Cosmos DB for NoSQL disorot.

  4. Pada halaman Azure Cosmos DB, masukkan informasi berikut:

    • Pilih Langganan yang ingin Anda gunakan untuk database Anda.
    • Tentukan apakah akan membuat Grup sumber daya baru untuk database Anda, atau memilih grup sumber daya yang ada.
    • Masukkan Nama Akun unik, yang Anda gunakan sebagai URI untuk database Anda. Sebagai contoh: contosoaccounttest.
    • Tentukan Lokasi untuk database Anda.
    • Pilih Terapkan Diskon Tingkat Gratis jika Anda ingin membuat akun hanya untuk tujuan demonstrasi.
    • Biarkan sisa opsi dan pengaturan default apa adanya.
  5. Pilih Tinjau + buat, tinjau spesifikasi Anda, dan pilih Buat.

    Cuplikan layar portal Azure yang memperlihatkan halaman Buat Akun Azure Cosmos DB dengan Azure Cosmos DB untuk pengaturan NoSQL.

  6. Saat database Anda telah dibuat, database tersebut tercantum di Dasbor Azure Anda, dan di bawah halaman Semua Sumber Daya dan Azure Cosmos DB. Untuk membuat database dan kontainer untuk Azure Cosmos DB yang baru dibuat, lihat bagian Menambahkan database dan kontainer mulai cepat: Membuat akun, database, kontainer, dan item Azure Cosmos DB dari portal Azure. Anda dapat memilih database Anda untuk salah satu lokasi tersebut lalu membuka halaman properti untuk cache Anda.

  7. Saat halaman properti untuk database Anda ditampilkan, pilih Kunci dan salin URI Anda dan akses kunci untuk database Anda. Anda menggunakan nilai-nilai ini di aplikasi Spring Boot Anda.

    Cuplikan layar portal Azure yang memperlihatkan akun Azure Cosmos DB dengan halaman Kunci yang ditampilkan.

Penting

Di Azure Cosmos DB yang baru dibuat, tetapkan Owner peran ke akun Azure yang saat ini Anda gunakan. Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Microsoft Azure.

Membuat aplikasi Spring Boot dengan Spring Initializr

Gunakan langkah-langkah berikut untuk membuat proyek aplikasi Spring Boot yang baru dengan dukungan Azure. Sebagai alternatif, Anda dapat menggunakan sampel spring-cloud-azure-data-cosmos-sample di repositori azure-spring-boot-samples . Lalu, Anda dapat melompatinya dan langsung membuka Bangun dan uji aplikasi Anda.

  1. Telusuri https://start.spring.io/.

  2. Tentukan opsi berikut:

    • Buat proyek Maven dengan Java.
    • Tentukan versi Spring Boot Anda ke 2.7.11.
    • Tentukan nama Grup dan Artefak untuk aplikasi Anda.
    • Pilih 17 untuk versi Java.
    • Tambahkan Dukungan Azure di dependensi.

    Catatan

    Spring Initializr menggunakan nama Grup dan Artefak untuk membuat nama paket; sebagai contoh: com.example.wingtiptoysdata.

    Versi Spring Boot mungkin lebih tinggi daripada versi yang didukung oleh Dukungan Azure. Setelah proyek dibuat secara otomatis, Anda dapat mengubah versi Spring Boot secara manual ke versi tertinggi yang didukung oleh Azure, yang dapat Anda temukan di Spring-Versions-Mapping.

  3. Saat Anda telah menentukan opsi yang tercantum sebelumnya, pilih HASILKAN.

  4. Ketika diminta, unduh proyek ke jalur pada komputer lokal Anda dan ekstrak filenya.

Aplikasi Spring Boot sederhana Anda sekarang siap untuk diedit.

Konfigurasikan aplikasi Spring Boot Anda untuk menggunakan Azure Spring Boot Starter

  1. Temukan file pom.xml di direktori aplikasi Anda; sebagai contoh:

    C:\SpringBoot\wingtiptoysdata\pom.xml

    -atau-

    /users/example/home/wingtiptoysdata/pom.xml

  2. Buka file pom.xml dalam editor teks, dan tambahkan hal berikut ke elemen <dependencies>:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-data-cosmos</artifactId>
    </dependency>
    

    Catatan

    Untuk informasi selengkapnya tentang cara mengelola versi pustaka Spring Cloud Azure dengan menggunakan tagihan materi (BOM), lihat bagian Memulai dari panduan pengembang Spring Cloud Azure.

  3. Simpan dan tutup file pom.xml.

Konfigurasikan aplikasi Spring Boot Anda untuk menggunakan Azure Cosmos DB

  1. Temukan file application.properties di direktori sumber daya dari aplikasi Anda; sebagai contoh:

    C:\SpringBoot\wingtiptoysdata\src\main\resources\application.properties

    -atau-

    /users/example/home/wingtiptoysdata/src/main/resources/application.properties

  2. Buka file application.properties di editor teks, dan tambahkan baris berikut ke filenya, dan ganti nilai sampelnya dengan properti yang sesuai untuk database Anda:

    # Specify the DNS URI of your Azure Cosmos DB.
    spring.cloud.azure.cosmos.endpoint=https://contosoaccounttest.documents.azure.com:443/
    
    # Specify the name of your database.
    spring.cloud.azure.cosmos.database=contosoaccounttest
    spring.cloud.azure.cosmos.populate-query-metrics=true
    
  3. Simpan dan tutup file application.properties .

Menambahkan kode sampel untuk mengimplementasikan fungsionalitas database dasar

Di bagian ini, Anda membuat dua kelas Java untuk menyimpan data pengguna. Kemudian, Anda memodifikasi kelas aplikasi utama untuk membuat instans User kelas dan menyimpannya ke database Anda.

Menentukan kelas dasar untuk menyimpan data pengguna

  1. Buat file baru bernama User.java di direktori yang sama dengan file Java aplikasi utama Anda.

  2. Buka file User.java di editor teks, dan tambahkan baris berikut ke file untuk menentukan kelas pengguna generik yang menyimpan dan mengambil nilai dalam database Anda:

    package com.example.wingtiptoysdata;
    
    import com.azure.spring.data.cosmos.core.mapping.Container;
    import com.azure.spring.data.cosmos.core.mapping.PartitionKey;
    import org.springframework.data.annotation.Id;
    
    @Container(containerName = "mycollection")
    public class User {
        @Id
        private String id;
        private String firstName;
        @PartitionKey
        private String lastName;
        private String address;
    
        public User() {
    
        }
    
        public User(String id, String firstName, String lastName, String address) {
            this.id = id;
            this.firstName = firstName;
            this.lastName = lastName;
            this.address = address;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        @Override
        public String toString() {
            return String.format("%s %s, %s", firstName, lastName, address);
        }
    }
    
  3. Simpan dan tutup file User.java.

Tentukan antarmuka repositori data

  1. Buat file baru bernama UserRepository.java di direktori yang sama dengan file Java aplikasi utama Anda.

  2. Buka file UserRepository.java di editor teks, dan tambahkan baris berikut ke file untuk menentukan antarmuka repositori pengguna yang memperpanjang antarmuka ReactiveCosmosRepository default:

    package com.example.wingtiptoysdata;
    
    import com.azure.spring.data.cosmos.repository.ReactiveCosmosRepository;
    import org.springframework.stereotype.Repository;
    import reactor.core.publisher.Flux;
    
    @Repository
    public interface UserRepository extends ReactiveCosmosRepository<User, String> {
        Flux<User> findByFirstName(String firstName);
    }
    

    Antarmuka ReactiveCosmosRepository menggantikan antarmuka DocumentDbRepository dari versi starter sebelumnya. Antarmuka baru menyediakan API sinkron dan reaktif untuk operasi simpan, hapus, dan temukan tingkat dasar.

  3. Simpan dan tutup file UserRepository.java.

Memodifikasi kelas aplikasi utama

  1. Temukan file Java aplikasi utama di direktori paket aplikasi Anda; sebagai contoh:

    C:\SpringBoot\wingtiptoysdata\src\main\java\com\example\wingtiptoysdata\WingtiptoysdataApplication.java

    -atau-

    /users/example/home/wingtiptoysdata/src/main/java/com/example/wingtiptoysdata/WingtiptoysdataApplication.java

  2. Buka file Java aplikasi utama di editor teks, dan tambahkan baris berikut ke file:

    package com.example.wingtiptoysdata;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.util.Assert;
    import reactor.core.publisher.Flux;
    import reactor.core.publisher.Mono;
    
    import java.util.Optional;
    
    @SpringBootApplication
    public class WingtiptoysdataApplication implements CommandLineRunner {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(WingtiptoysdataApplication.class);
    
        @Autowired
        private UserRepository repository;
    
        public static void main(String[] args) {
            SpringApplication.run(WingtiptoysdataApplication.class, args);
        }
    
        public void run(String... var1) {
            this.repository.deleteAll().block();
            LOGGER.info("Deleted all data in container.");
    
            final User testUser = new User("testId", "testFirstName", "testLastName", "test address line one");
    
            // Save the User class to Azure Cosmos DB database.
            final Mono<User> saveUserMono = repository.save(testUser);
    
            final Flux<User> firstNameUserFlux = repository.findByFirstName("testFirstName");
    
            //  Nothing happens until we subscribe to these Monos.
            //  findById won't return the user as user isn't present.
            final Mono<User> findByIdMono = repository.findById(testUser.getId());
            final User findByIdUser = findByIdMono.block();
            Assert.isNull(findByIdUser, "User must be null");
    
            final User savedUser = saveUserMono.block();
            Assert.state(savedUser != null, "Saved user must not be null");
            Assert.state(savedUser.getFirstName().equals(testUser.getFirstName()), "Saved user first name doesn't match");
    
            firstNameUserFlux.collectList().block();
    
            final Optional<User> optionalUserResult = repository.findById(testUser.getId()).blockOptional();
            Assert.isTrue(optionalUserResult.isPresent(), "Cannot find user.");
    
            final User result = optionalUserResult.get();
            Assert.state(result.getFirstName().equals(testUser.getFirstName()), "query result firstName doesn't match!");
            Assert.state(result.getLastName().equals(testUser.getLastName()), "query result lastName doesn't match!");
    
            LOGGER.info("findOne in User collection get result: {}", result.toString());
        }
    }
    
  3. Simpan dan tutup file Java aplikasi utama.

Membuat dan menguji aplikasi Anda

  1. Buka perintah dan arahkan navigasi ke folder tempat file pom.xml Anda berada; sebagai contoh:

    cd C:\SpringBoot\wingtiptoysdata

    -atau-

    cd /users/example/home/wingtiptoysdata

  2. Gunakan perintah berikut untuk membangun dan menjalankan aplikasi Anda:

    ./mvnw clean
    

    Perintah ini menjalankan aplikasi secara otomatis sebagai bagian dari fase pengujian. Anda juga dapat menggunakan:

    ./mvnw spring-boot:run
    

    Setelah beberapa output build dan pengujian, jendela konsol Anda menampilkan pesan yang mirip dengan contoh berikut:

    INFO 1365 --- [           main] c.e.w.WingtiptoysdataApplication         : Deleted all data in container.
    
    ... (omitting connection and diagnostics output) ...
    
    INFO 1365 --- [           main] c.e.w.WingtiptoysdataApplication         : findOne in User collection get result: testFirstName testLastName, test address line one
    

    Pesan output ini menunjukkan bahwa data berhasil disimpan ke Azure Cosmos DB lalu diambil lagi.

Membersihkan sumber daya

Jika Anda tidak akan terus menggunakan aplikasi ini, pastikan untuk menghapus grup sumber daya yang berisi Azure Cosmos DB yang Anda buat sebelumnya. Anda dapat menghapus grup sumber daya dari portal Azure.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Spring dan Azure, lanjutkan ke pusat dokumentasi Spring di Azure.

Sumber daya lainnya

Untuk informasi selengkapnya tentang menggunakan Azure Cosmos DB dan Java, lihat artikel berikut:

Untuk informasi selengkapnya tentang menggunakan aplikasi Spring Boot di Azure, lihat artikel berikut:

Selengkapnya mengenai cara menggunakan Azure dengan Java, lihat Azure untuk Pengembang Java dan Bekerja dengan Azure DevOps dan Java.

Spring Framework adalah solusi sumber terbuka yang membantu pengembang Java membuat aplikasi tingkat perusahaan. Salah satu proyek yang lebih populer yang dibangun di atas platform tersebut adalah Spring Boot, yang menyediakan pendekatan sederhana untuk membuat aplikasi Java yang mandiri. Untuk membantu pengembang memulai dengan Spring Boot, beberapa contoh paket Spring Boot tersedia di https://github.com/spring-guides/. Selain memilih dari daftar proyek Spring Boot dasar, Spring Initializr membantu pengembang memulai dengan membuat aplikasi Spring Boot kustom.