MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Gestion des connexions Mongodb en Java en tant qu'objet orienté

Dans l'application, un seul MongoClient objet avec un nombre requis de connexions, en utilisant le regroupement de connexions , fonctionnera dans ce cas. La valeur par défaut du pool de connexion de 100 , et peut être modifié (ou configuré) selon les besoins.

L'objet client mongo peut être créé au démarrage de l'application et n'est fermé que lorsque l'application est fermée. Cela permet d'économiser les ressources liées à la création d'une connexion avec les objets client mongo dans chaque classe d'accès à la collection.

Le même objet client mongo peut être utilisé dans toute l'application. Un célibataire (qui gère une instance de l'objet client mongo) est accessible par tout autre objet de l'application nécessitant une connexion au serveur de base de données MongoDB.

Qu'est-ce que le regroupement de connexions ?

Exemple de code :

/*
 * 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();
    // ...
}

Client Mongo

MongoClient l'objet est utilisé pour se connecter au serveur MongoDB, accéder à une base de données à l'aide de getDatebase() méthode et travailler avec des collections.

com.mongodb.client.MongoClient interface :

À partir de la documentation Java de MongoDB :

L'instance MongoClient représente un pool de connexions à la base de données ; vous n'aurez besoin que d'une seule instance de la classe MongoClient même avec plusieurs threads.

Le code suivant crée un objet de connexion client MongoDB avec les paramètres par défaut, comme l'hôte ("localhost") et le port (27017 ), regroupement de connexions, etc., et se connecte à une instance MongoDB et obtient l'accès à la testDB base de données.

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

Paramètres du client Mongo :

Vous pouvez spécifier explicitement d'autres paramètres avec le MongoClientSettings pour contrôler le comportement d'un MongoClient .

MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)

Les ConnectionPoolSettings L'objet spécifie tous les paramètres liés au pool de connexions à un serveur MongoDB. L'application crée ce pool de connexions lors de la création de l'objet client. ConnectionPoolSettings.Builder est un constructeur pour ConnectionPoolSettings , possède des méthodes pour spécifier les propriétés du pool de connexions. Par exemple, maxSize​(int maxSize)  :Le nombre maximum de connexions autorisées (la valeur par défaut est 100 ). D'autres méthodes incluent, minSize , maxConnectionIdleTime , etc.

Code pour instancier un MongoClient avec les paramètres du pool de connexion :

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());