Bagikan melalui


Mengakses data dengan Azure Cosmos DB NoSQL API

Artikel ini memperlihatkan kepada Anda cara menambahkan Spring Cloud Azure Starter for 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 Microsoft 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 terdistribusi secara global yang memungkinkan pengembang untuk bekerja dengan data menggunakan berbagai API standar, seperti SQL, MongoDB, Graph, dan Table API. 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 Microsoft Azure

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

  1. Akses 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 Microsoft 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 ingin Anda gunakan untuk database Anda.
    • Tentukan apakah akan membuat grup sumber daya baru untuk database Anda, atau memilih grup sumber daya yang sudah ada.
    • Masukkan nama akun unik, yang Anda gunakan sebagai URI untuk database Anda. Misalnya: 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 dan buat, tinjau kembali spesifikasi Anda, dan pilih Buat.

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

  6. Saat database Anda dibuat, database tersebut tercantum di Dasbor AzureAnda, 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 kontainerMulai Cepat: Membuat akun, database, kontainer, dan item Azure Cosmos DB dari portal Microsoft Azure. Anda bisa memilih database Anda untuk salah satu lokasi tersebut untuk membuka halaman properti untuk cache Anda.

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

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

Penting

Di Azure Cosmos DB yang baru dibuat, tetapkan peran Owner 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 baru dengan dukungan Azure. Sebagai alternatif, Anda dapat menggunakan sampel spring-cloud-azure-data-cosmos-sample di azure-spring-boot-samples repositori. Kemudian, Anda dapat langsung melompat ke Build dan menguji aplikasi Anda.

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

  2. Tentukan opsi berikut:

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

    Nota

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

    Versi Spring Boot mungkin lebih tinggi dari 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. Ketika Anda telah menentukan opsi yang tercantum sebelumnya, pilih GENERATE.

  4. Ketika diminta, unduh proyek ke jalur di komputer lokal Anda dan ekstrak file.

Aplikasi Spring Boot sederhana Anda sekarang siap untuk diedit.

Mengonfigurasi aplikasi Spring Boot Anda untuk menggunakan Azure Spring Boot Starter

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

    C:\SpringBoot\wingtiptoysdata\pom.xml

    -atau-

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

  2. Buka file pom.xml di editor teks, dan tambahkan yang berikut ini ke elemen <dependencies>:

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

    Nota

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

  3. Simpan dan tutup file pom.xml.

Mengonfigurasi aplikasi Spring Boot Anda untuk menggunakan Azure Cosmos DB Anda

  1. Temukan file application.properties di direktori sumber daya aplikasi Anda; misalnya:

    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 file, dan ganti nilai sampel 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/
    spring.cloud.azure.cosmos.key=your-cosmosdb-account-key
    
    # 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 menerapkan fungsionalitas database dasar

Di bagian ini, Anda membuat dua kelas Java untuk menyimpan data pengguna. Kemudian, Anda memodifikasi kelas aplikasi utama untuk membuat instans kelas User 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.

Mendefinisikan 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 memperluas 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 dasar.

  3. Simpan dan tutup file UserRepository.java.

Mengubah kelas aplikasi utama

  1. Temukan file Java aplikasi utama di direktori paket aplikasi Anda, misalnya:

    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 navigasi ke folder tempat file pom.xml Anda berada; misalnya:

    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 Microsoft Azure.

Langkah berikutnya

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

Sumber daya lainnya

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

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

Untuk informasi selengkapnya tentang menggunakan Azure dengan Java, lihat Azure for Java Developers 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 yang disederhanakan untuk membuat aplikasi Java yang berdiri sendiri. Untuk membantu pengembang mulai menggunakan 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 mulai membuat aplikasi Spring Boot kustom.