From a68ef4eb28997539d880b6399d776992b1175b6a Mon Sep 17 00:00:00 2001 From: godotg Date: Sun, 11 Dec 2022 21:14:43 +0800 Subject: [PATCH] perf[orm]: orm manager adds an API to get MongoClient --- .../java/com/zfoo/orm/manager/IOrmManager.java | 12 ++++++------ .../java/com/zfoo/orm/manager/OrmManager.java | 15 +++++++++------ .../com/zfoo/orm/accessor/TransactionTest.java | 2 +- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/orm/src/main/java/com/zfoo/orm/manager/IOrmManager.java b/orm/src/main/java/com/zfoo/orm/manager/IOrmManager.java index 36bfa062..82982a37 100644 --- a/orm/src/main/java/com/zfoo/orm/manager/IOrmManager.java +++ b/orm/src/main/java/com/zfoo/orm/manager/IOrmManager.java @@ -13,7 +13,7 @@ package com.zfoo.orm.manager; -import com.mongodb.client.ClientSession; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.zfoo.orm.cache.IEntityCaches; import com.zfoo.orm.model.entity.IEntity; @@ -33,16 +33,16 @@ public interface IOrmManager { void initAfter(); + /** + * EN:Get Mongo Client, through which you can get other databases or do some other complex operations + * CN:获取MongoClient,通过MongoClient可以获取到其它数据库或者做一些其它的复杂操作 + */ + MongoClient mongoClient(); > IEntityCaches getEntityCaches(Class clazz); Collection> getAllEntityCaches(); - /** - * 获取一个会话 - */ - ClientSession getClientSession(); - /** * 基于对象的orm操作 */ diff --git a/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java b/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java index d6dda23d..7a89a689 100644 --- a/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java +++ b/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java @@ -16,7 +16,10 @@ package com.zfoo.orm.manager; import com.mongodb.MongoClientSettings; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; -import com.mongodb.client.*; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.IndexOptions; import com.mongodb.client.model.Indexes; import com.zfoo.orm.OrmContext; @@ -220,6 +223,11 @@ public class OrmManager implements IOrmManager { .forEach(it -> entityCachesMap.remove(it)); } + @Override + public MongoClient mongoClient() { + return mongoClient; + } + @Override public > IEntityCaches getEntityCaches(Class clazz) { var usable = allEntityCachesUsableMap.get(clazz); @@ -237,11 +245,6 @@ public class OrmManager implements IOrmManager { return Collections.unmodifiableCollection(entityCachesMap.values()); } - @Override - public ClientSession getClientSession() { - return mongoClient.startSession(); - } - @Override public > MongoCollection getCollection(Class entityClazz) { var collectionName = collectionNameMap.get(entityClazz); diff --git a/orm/src/test/java/com/zfoo/orm/accessor/TransactionTest.java b/orm/src/test/java/com/zfoo/orm/accessor/TransactionTest.java index 5d7b1104..3507ee72 100644 --- a/orm/src/test/java/com/zfoo/orm/accessor/TransactionTest.java +++ b/orm/src/test/java/com/zfoo/orm/accessor/TransactionTest.java @@ -38,7 +38,7 @@ public class TransactionTest { var context = new ClassPathXmlApplicationContext("application.xml"); /* Step 1: Start a client session. */ - var clientSession = OrmContext.getOrmManager().getClientSession(); + var clientSession = OrmContext.getOrmManager().mongoClient().startSession(); /* Step 2: Optional. Define options to use for the transaction. */