MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Gerenciando conexões Mongodb em Java como Orientado a Objetos


No aplicativo, um único MongoClient objeto com um número necessário de conexões, usando o pooling de conexões , funcionará neste caso. O valor padrão do pool de conexões de 100 , e pode ser modificado (ou configurado) conforme necessário.

O objeto cliente mongo pode ser criado no início do aplicativo e é fechado somente quando o aplicativo é fechado. Isso economiza os recursos relacionados à criação de uma conexão com os objetos do cliente mongo em cada classe de acesso à coleção.

O mesmo objeto de cliente mongo pode ser usado em todo o aplicativo. Um singleton class (que mantém uma instância do objeto cliente mongo) pode ser acessada por qualquer outro objeto no aplicativo que precise de uma conexão com o servidor de banco de dados MongoDB.


O que é pool de conexões?
Código de exemplo:
/*
 * 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();
    // ...
}

Cliente Mongo

MongoClient objeto é usado para se conectar ao servidor MongoDB, obter acesso a um banco de dados usando o getDatebase() método e trabalhar com coleções.

com.mongodb.client.MongoClient interface:

Da documentação do MongoDB Java :

A instância MongoClient representa um pool de conexões com o banco de dados; você precisará apenas de uma instância da classe MongoClient, mesmo com vários threads.

O código a seguir cria um objeto de conexão do cliente MongoDB com configurações padrão, como o host ("localhost") e a porta (27017 ), pool de conexões, etc., e se conecta a uma instância do MongoDB e obtém acesso ao testDB base de dados.
MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("testDB");

Configurações do Mongo Client:

Você pode especificar explicitamente outras configurações com o MongoClientSettings para controlar o comportamento de um MongoClient .
MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)

As ConnectionPoolSettings object especifica todas as configurações relacionadas ao conjunto de conexões com um servidor MongoDB. O aplicativo cria esse pool de conexões quando o objeto cliente é criado. ConnectionPoolSettings.Builder é um construtor para ConnectionPoolSettings , tem métodos para especificar as propriedades do conjunto de conexões. Por exemplo, maxSize​(int maxSize) :O número máximo de conexões permitidas (o padrão é 100 ). Outros métodos incluem, minSize , maxConnectionIdleTime , etc

Código para instanciar um MongoClient com configurações de pool de conexão:
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());