Megosztás a következőn keresztül:


Java-konzolalkalmazás létrehozása az Azure DocumentDB-vel

Ebben az útmutatóban egy Java-konzolalkalmazást fejleszt egy Azure DocumentDB-fürthöz való csatlakozáshoz. Az útmutató lépéseket tartalmaz a fejlesztési környezet beállításához, a azure-identity javai Azure SDK-ból származó csomaggal való hitelesítéshez, valamint az adatbázis és a gyűjtemény kezeléséhez.

Előfeltételek

  • Azure-előfizetés

  • Meglévő Azure DocumentDB-fürt

  • Az ön identitásával konfigurált Microsoft Entra-hitelesítés a fürthöz rendelt root szerepkörrel.

  • A Java legújabb verziója.

A konzolalkalmazás konfigurálása

Ezután hozzon létre egy új konzolalkalmazás-projektet, és importálja a fürt hitelesítéséhez szükséges kódtárakat.

  1. Hozzon létre egy új Maven-projektet a Maven parancssori eszközeivel.

    mvn archetype:generate -DgroupId=com.cosmicworks -DartifactId=mongodb-console-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    
  2. Lépjen be a projektkönyvtárba.

    cd mongodb-console-app
    
  3. Hozzon létre egy új App.java fájlt egy Main osztálysal a megfelelő csomagkönyvtárban.

    mkdir -p src/main/java/com/cosmicworks
    touch src/main/java/com/cosmicworks/App.java
    
  4. Adja hozzá a azure-identity függőséget a pom.xml fájlhoz.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.15.4</version>
    </dependency>
    
  5. Adja hozzá a mongodb-driver-sync függőséget a pom.xml fájlhoz.

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

Csatlakozzon a klaszterhez

Most használja a Azure.Identity könyvtárat, hogy szerezzen egy TokenCredential-et, amelyet a fürthöz való csatlakozáshoz használhat. A hivatalos MongoDB-meghajtó egy speciális felülettel rendelkezik, amelyet implementálni kell ahhoz, hogy tokeneket szerezzen be a Microsoft Entra-tól a fürthöz való csatlakozáshoz.

  1. Először importálja a szükséges osztályokat a Java-osztályfájl tetejé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. A fő függvényben hozzon létre egy DefaultAzureCredential példányt, és állítsa be az OpenID Connect (OIDC) visszahívást a tokenek lekéréséhez.

    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. Hozzon létre egy új példányt MongoCredential a korábban definiált visszahívás használatával.

    MongoCredential mongoCredential = MongoCredential.createOidcCredential(null)
            .withMechanismProperty("OIDC_CALLBACK", oidcCallback);
    
  4. Hozzon létre változókat a fürt nevéhez és a teljes hosztvégponthoz.

    String clusterName = "<azure-documentdb-cluster-name>";
    String host = clusterName + ".global.mongocluster.cosmos.azure.com";
    
  5. Hozzon létre egy MongoClientSettings példányt a gazdagép, a kapcsolati legjobb gyakorlatok és a hitelesítő adatok felhasználásával.

    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. Hozzon létre egy újat MongoClient a létrehozott beállítások használatával.

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

Gyakori műveletek végrehajtása

Végül használja a hivatalos könyvtárat az adatbázisok, gyűjtemények és dokumentumok gyakori feladatainak elvégzéséhez. Itt ugyanazokat az osztályokat és metódusokat használja, amelyekkel a MongoDB-vel vagy a DocumentDB-vel kezelheti gyűjteményeit és elemeit.

  1. Szerezzen hivatkozásokat a database és collection esetében.

    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. Ábrázolja a dokumentumokat egy Product osztály használatával.

    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. Hozzon létre egy új dokumentumot collection.replaceOne az upsert engedélyezésével.

    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. Egy dokumentum keresésének végrehajtása a collection.find és az egyedi azonosító segítségével.

    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. Általános lekérdezés végrehajtása bináris JSON(BSON) szűrővel.

    Bson query = Filters.eq("category", "gear-surf-surfboards");
    
    collection.find(query).forEach(doc -> {
        System.out.println("Found document:\\t" + doc.toJson());
    });
    
  6. Dokumentumok törlése szűrővel és collection.deleteMany.

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