MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mengelola koneksi Mongodb di Jawa sebagai Berorientasi Objek

Dalam aplikasi, satu MongoClient objek dengan jumlah koneksi yang diperlukan, menggunakan pengumpulan koneksi , akan bekerja dalam kasus ini. Nilai default kumpulan koneksi 100 , dan dapat dimodifikasi (atau dikonfigurasi) sesuai kebutuhan.

Objek klien mongo dapat dibuat di awal aplikasi dan ditutup hanya ketika aplikasi ditutup. Ini menghemat sumber daya yang terkait dengan membuat koneksi dengan objek klien mongo di setiap kelas akses koleksi.

Objek klien mongo yang sama dapat digunakan di seluruh aplikasi. Seorang lajang class (yang memelihara satu instance dari objek klien mongo) dapat diakses oleh objek lain dalam aplikasi yang memerlukan koneksi ke server database MongoDB.

Apa itu connection pooling?

Contoh Kode:

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

Klien Mongo

MongoClient objek digunakan untuk terhubung ke server MongoDB, mendapatkan akses ke database menggunakan getDatebase() metode dan bekerja dengan koleksi.

com.mongodb.client.MongoClient antarmuka:

Dari dokumentasi MongoDB Java :

Instance MongoClient mewakili kumpulan koneksi ke database; Anda hanya memerlukan satu instance kelas MongoClient bahkan dengan banyak utas.

Kode berikut membuat objek koneksi klien MongoDB dengan pengaturan default, seperti host ("localhost") dan port (27017 ), penggabungan koneksi, dll., dan terhubung ke instans MongoDB dan mendapatkan akses ke testDB basis data.

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

Setelan Klien Mongo:

Anda dapat secara eksplisit menentukan pengaturan lain dengan MongoClientSettings untuk mengontrol perilaku MongoClient .

MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)

ConnectionPoolSettings objek menentukan semua pengaturan yang berhubungan dengan kumpulan koneksi ke server MongoDB. Aplikasi membuat kumpulan koneksi ini saat objek klien dibuat. ConnectionPoolSettings.Builder adalah pembuat untuk ConnectionPoolSettings , memiliki metode untuk menentukan properti kumpulan koneksi. Mis., maxSize​(int maxSize) :Jumlah maksimum koneksi yang diizinkan (defaultnya adalah 100 ). Metode lain termasuk, minSize , maxConnectionIdleTime , dll.

Kode untuk membuat instance MongoClient dengan setelan kumpulan koneksi:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:kueri Array untuk nilai 'benar' pada indeks n

  2. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo asli

  3. Temukan dokumen dengan array yang tidak berisi dokumen dengan nilai bidang tertentu di MongoDB

  4. Bagaimana ini memilih di MongoDB

  5. Cara mendapatkan ukuran dalam byte dokumen bson