建立RavenDB连接时"expensive"是哪种方法

Which method is the "expensive" one when establishing a RavenDB connection

我在我的 JAX REST 服务中使用 RavenDB,我想将数据库连接设置代码从服务方法中移出并移到它自己的 ServletContextListener 中,这样它只在 Tomcat 服务器上执行一次启动;之后,每个服务调用都应该由一个已经存在的连接来处理。 (This 文章描述了如何设置连接池 - 但我不确定它是否仍然适用,已有 9 年历史了...)

关于建立数据库连接的 "expensive" 操作,它们是哪些 - 来自:

try (DocumentStore store = ravenDBStore)
                {
                    store.parseConnectionString(ravenLocation);
                    store.initialize();
                    IDocumentSession currentSession = store.openSession();
                    ...
}

我怀疑是initialize()方法的问题,这个方法开销很大,应该移出服务调用代码; openSession() 怎么样?可以 - 即使在理论上 - 在对 REST 方法的服务调用之间 shared/re-used 吗? 顺便说一句,this article 是我要重构数据库连接代码的方法。

谢谢!

DocumentStore 应被视为单例(每个应用程序一个实例), 阅读 this。 Initialize 方法创建与服务器的连接,然后在初始化之前你不能打开一个新的会话。 然后移动 DocumentStore 的创建及其初始化。

考虑到这是一项服务,我建议您按请求打开会话,无论如何打开新会话对性能影响不大