Folgendes Beispiel soll den Umgang mit Transaktionen verdeutlichen, welche ab Version 4 von MongoDB unterstützt werden. Dafür muss über eine ClientSession eine Transaktion geöffnet werden. Alle Operationen, welche an dieser Transaktion teilnehmen sollen, müssen diese als Parameter im Aufruf enthalten.
Voraussetzung
- JDK 1.8
- MongoDB 4.x
- ReplicaSet
Interessant dabei ist, dass die Transaktion sogar Collections in unterschiedlichen Datenbanken umfassen kann.
MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017")); MongoDatabase db1 = mongoClient.getDatabase("test1"); MongoDatabase db2 = mongoClient.getDatabase("test2"); MongoCollection<Document> collection1 = db1.getCollection("testcollection"); MongoCollection<Document> collection2 = db2.getCollection("testcollection");# try (ClientSession session = mongoClient.startSession()) { session.startTransaction(); collection1.insertOne(session, new Document("test", "123")); collection2.insertOne(session, new Document("test", "456")); session.commitTransaction(); }