Azure DocumentDB ile Java konsol uygulaması oluşturma

Bu kılavuzda, Bir Azure DocumentDB kümesine bağlanmak için bir Java konsol uygulaması geliştireceksiniz. Kılavuzda geliştirme ortamınızı ayarlama, Java için Azure SDK'dan paketi kullanarak azure-identity kimlik doğrulaması yapma ve belgeleri yönetmek için veritabanı ve koleksiyonla etkileşim kurma adımları yer alır.

Prerequisites

  • Mevcut bir Azure DocumentDB kümesi

Konsol uygulamanızı yapılandırma

Ardından, yeni bir konsol uygulaması projesi oluşturun ve kümenizde kimlik doğrulaması yapmak için gerekli kitaplıkları içeri aktarın.

  1. Maven komut satırı araçlarını kullanarak yeni bir Maven projesi oluşturun.

    mvn archetype:generate -DgroupId=com.cosmicworks -DartifactId=mongodb-console-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    
  2. Proje dizinine gidin.

    cd mongodb-console-app
    
  3. Uygun paket dizininde bir sınıfla yeni bir Main dosyası oluşturun.

    mkdir -p src/main/java/com/cosmicworks
    touch src/main/java/com/cosmicworks/App.java
    
  4. azure-identity bağımlılığını pom.xml dosyanıza ekleyin.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.15.4</version>
    </dependency>
    
  5. mongodb-driver-sync bağımlılığını pom.xml dosyanıza ekleyin.

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver-sync</artifactId>
        <version>5.4.0</version>
    </dependency>
    

Kümeye bağlanma

Şimdi kitaplığını Azure.IdentityTokenCredential kullanarak kümenize bağlanmak için bir kullanın. Resmi MongoDB sürücüsünün, kümeye bağlanırken kullanılmak üzere Microsoft Entra'dan belirteçleri almak için uygulanması gereken özel bir arabirimi vardır.

  1. Java sınıf dosyanızın en üstündeki gerekli sınıfları içeri aktararak başlayın.

    import java.util.concurrent.TimeUnit;
    
    import org.bson.Document;
    import org.bson.conversions.Bson;
    
    import com.azure.core.credential.TokenCredential;
    import com.azure.core.credential.TokenRequestContext;
    import com.azure.identity.DefaultAzureCredentialBuilder;
    import com.mongodb.MongoClientSettings;
    import com.mongodb.MongoCredential;
    import com.mongodb.MongoCredential.OidcCallbackContext;
    import com.mongodb.MongoCredential.OidcCallbackResult;
    import com.mongodb.client.MongoClient;
    import com.mongodb.client.MongoClients;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.client.model.Filters;
    import com.mongodb.client.model.ReplaceOptions;
    import com.mongodb.client.result.UpdateResult;
    
  2. Ana yönteminizde bir DefaultAzureCredential örnek oluşturun ve belirteçleri getirmek için OpenID Connect (OIDC) geri çağrısını ayarlayın.

    TokenCredential credential = new DefaultAzureCredentialBuilder().build();
    
    MongoCredential.OidcCallback oidcCallback = new MongoCredential.OidcCallback() {
        @Override
        public OidcCallbackResult onRequest(OidcCallbackContext context) {
            TokenRequestContext tokenRequestContext = new TokenRequestContext()
                    .addScopes("https://ossrdbms-aad.database.windows.net/.default");
            String token = credential.getTokenSync(tokenRequestContext).getToken();
            return new OidcCallbackResult(token);
        }
    };
    
  3. Önceden tanımlanmış geri aramanızı kullanarak MongoCredential yeni bir örneğini oluşturun.

    MongoCredential mongoCredential = MongoCredential.createOidcCredential(null)
            .withMechanismProperty("OIDC_CALLBACK", oidcCallback);
    
  4. Kümenin adı ve konak uç noktasının tamamı için değişkenler oluşturun.

    String clusterName = "<azure-documentdb-cluster-name>";
    String host = clusterName + ".global.mongocluster.cosmos.azure.com";
    
  5. Sunucu, bağlantı için en iyi uygulamalar ve kimlik bilgilerini kullanarak bir MongoClientSettings örneği oluşturun.

    MongoClientSettings settings = MongoClientSettings.builder()
            .applyToClusterSettings(builder -> builder
                    .srvHost(host))
            .applyToSocketSettings(builder -> builder
                    .connectTimeout(2, TimeUnit.MINUTES))
            .applyToSslSettings(builder -> builder
                    .enabled(true))
            .retryWrites(true)
            .credential(mongoCredential)
            .build();
    
  6. Oluşturduğunuz ayarları kullanarak yeni bir MongoClient oluşturun.

    MongoClient client = MongoClients.create(settings);
    
    System.out.println("Client created");
    

Yaygın işlemler gerçekleştirme

Son olarak veritabanları, koleksiyonlar ve belgelerle ortak görevleri gerçekleştirmek için resmi kitaplığı kullanın. Burada, koleksiyonlarınızı ve öğelerinizi yönetmek için MongoDB veya DocumentDB ile etkileşimde bulunurken kullandığınız sınıfları ve yöntemleri kullanırsınız.

  1. database ve collection için referanslar alın.

    MongoDatabase database = client.getDatabase("<database-name>");
    
    System.out.println("Database pointer created");
    
    MongoCollection<Document> collection = database.getCollection("<collection-name>");
    
    System.out.println("Collection pointer created");
    
  2. Belgelerinizi bir Product sınıfı kullanarak temsil edin.

    public class Product {
        private String _id;
        private String category;
        private String name;
        private int quantity;
        private double price;
        private boolean clearance;
    
        // Getters and setters ommitted for brevity
    }
    
  3. collection.replaceOne kullanarak upsert etkinleştirildiğinde yeni bir belge oluşturun.

    Document document = new Document()
            .append("_id", "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb")
            .append("category", "gear-surf-surfboards")
            .append("name", "Yamba Surfboard")
            .append("quantity", 12)
            .append("price", 850.00)
            .append("clearance", false);
    
    Bson match = Filters.eq("_id", "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb");
    
    ReplaceOptions options = new ReplaceOptions().upsert(true);
    UpdateResult result = collection.replaceOne(match, document, options);
    
    System.out.println("Document upserted with _id:\\t" + result.getUpsertedId().asString().getValue());
    
  4. collection.find ve benzersiz tanımlayıcıyı kullanarak tek bir belgenin arama işlemini gerçekleştirin.

    Bson filter = Filters.eq("_id", "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb");
    
    collection.find(filter).forEach(doc -> {
        System.out.println("Read document _id:\\t" + doc.toJson());
    });
    
  5. İkili JSON (BSON) filtresi kullanarak genel bir sorgu gerçekleştirin.

    Bson query = Filters.eq("category", "gear-surf-surfboards");
    
    collection.find(query).forEach(doc -> {
        System.out.println("Found document:\\t" + doc.toJson());
    });
    
  6. ve collection.deleteManyfiltresini kullanarak belgeleri silme.

    Bson filter = Filters.eq("clearance", true);
    collection.deleteMany(filter);