sql >> Databáze >  >> NoSQL >> MongoDB

Správa připojení Mongodb v Javě jako objektově orientovaná

V aplikaci jeden MongoClient objekt s požadovaným počtem připojení pomocí sdružování připojení , bude v tomto případě fungovat. Výchozí hodnota fondu připojení je 100 a lze je upravit (nebo nakonfigurovat) podle potřeby.

Objekt klienta mongo lze vytvořit při spuštění aplikace a zavře se pouze při zavření aplikace. Tím se ušetří prostředky související s vytvářením připojení s klientskými objekty mongo v každé třídě přístupu ke kolekci.

V celé aplikaci lze použít stejný objekt klienta mongo. singleton třída (která udržuje jednu instanci objektu klienta mongo) může být přístupná z jakéhokoli jiného objektu v aplikaci, který potřebuje připojení k databázovému serveru MongoDB.

Co je sdružování připojení?

Příklad kódu:

/*
 * Manages the MongoClient object and its settings like host, port, connection pool, etc.
 */
public class DBAccess {

  private static MongoClient mongoClient;
  private static DBAccess dbAccess;

  // MongoClient with default settings
  // NOTE: the code will have only one of the constructors
  //private DBAccess() {
  //    final String connectionString = "mongodb://localhost:27017";
  //    this.mongoClient = MongoClients.create(connectionString);
  //}

  // MongoClient with custom settings.
  // Private constructor, so that the class can be instantiated outside this class.
  // NOTE: the code will have only one of the constructors
  private DBAccess() {

      MongoClientSettings settings =
          MongoClientSettings.builder()
              .applyToConnectionPoolSettings(builder ->
                   builder.maxSize(40).minSize(10))
             .applyToClusterSettings(builder ->
                   builder.hosts(Arrays.asList(new ServerAddress("localhost", 27017))))
            .build();

      mongoClient = MongoClients.create(settings);
  }

  public static MongoClient getConnection() {

      if (dbAccess == null) {
           dbAccess = new DBAccess();   
      }

      return mongoClient;
  }

  public static void closeDatabase() {
      mongoClient.close();
  }
}

/*
 * Class manages a collection.
 */
public class CollectionOneAccess {

  public static String COLLECTION_ONE = "collection_one";
  private MongoCollection<Document> collection;

  public CollectionOneAccess(MongoDatabase db) {    
      collection = db.getCollection(COLLECTION_ONE);
  }

  public void printOneDocument() {
      Document myDoc = collection.find().first();
      System.out.println(myDoc.toJson());
  }

  // other CRUD operations ...

}


// Usage of DBAcess and CollectionOneAccess classes:

private static final String APP_DATABASE = "abc_db";

public static void main(String [] args) {
    MongoDatabase database = DBAccess.getConnection().getDatabase(APP_DATABASE);
    CollectionOneAccess one = new CollectionOneAccess(database);
    one.printOneDocument();
    // ...
}

Klient Mongo

MongoClient objekt se používá k připojení k serveru MongoDB, získáte přístup k databázi pomocí getDatebase() metoda a práce s kolekcemi.

com.mongodb.client.MongoClient rozhraní:

Z dokumentace MongoDB Java :

Instance MongoClient představuje fond připojení k databázi; budete potřebovat pouze jednu instanci třídy MongoClient i s více vlákny.

Následující kód vytvoří objekt připojení klienta MongoDB s výchozím nastavením, jako je hostitel ("localhost") a port (27017 ), sdružování připojení atd. a připojí se k instanci MongoDB a získá přístup k testDB databáze.

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("testDB");

Nastavení klienta Mongo:

Další nastavení můžete explicitně zadat pomocí MongoClientSettings k ovládání chování MongoClient .

MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)

Nastavení ConnectionPoolSettings objekt určuje všechna nastavení, která se týkají fondu připojení k serveru MongoDB. Aplikace vytvoří tento fond připojení při vytvoření objektu klienta. ConnectionPoolSettings.Builder je tvůrce pro ConnectionPoolSettings , má metody pro určení vlastností fondu připojení. Např. maxSize​(int maxSize) :Maximální povolený počet připojení (výchozí je 100 ). Mezi další metody patří minSize , maxConnectionIdleTime , atd.

Kód pro vytvoření instance MongoClient s nastavením fondu připojení:

MongoClientSettings settings = MongoClientSettings.builder()
                                   .applyToConnectionPoolSettings(builder -> 
                                       builder.maxSize(20))
                                   .build();
MongoClient mongoClient = MongoClients.create(settings);
// ...
// Verify the connection pool settings 
System.out.println("Pool size: " + 
    settings.getConnectionPoolSettings().getMaxSize());


  1. Virtuální osídlení s Mongoose

  2. Demeteorizátor s node-webkit

  3. Najděte maximální prvek uvnitř pole

  4. Jak přejmenovat databázi mongodb