1.Mongo对象
内部实现了一个连接池。Mongo对象是线程安全的,因此可以只创建一个,在多线程环境下安全使用。因此,我们可以用将Mongo变量作为一个Singleton类的成员变量,从而保证只创建一个连接池。Mongo.close方法将关闭当前所有活跃的连接。所以要在web工程被从Tomcat或者GlassFish容器中注销的时候确保调用close方法。
2.DB对象
DB对象可以通过Mongo.get方法获得,代表了和数据库的一个连接。默认情况下,当执行完数据库的查询或者更新操作后,连接将自动回到连接池中。不需要我们手动调用代码放回池中。至于如何实现,我猜测是update,query,save方法内部有finally块,那里面有还连接到池中的代码。
3.手动还连接入池
DB对象也允许在一个连接上执行多个操作,比如下面的代码:
- DB db...;
- db.requestStart();
-
- code....
-
- db.requestDone();
requestStart 会让自动还连接入池失效,因此必须确保requestDone一定能够被调用。这里应该用finally块会更严密一些。
4.示例代码,下面的类实现了Lazy loading的Singleton模式,里面的成员变量Mongo mongo因此只会实例化一次。注意连接池大小和重连设置。
- package com.freebird.helper;
-
-
import com.mongodb.Mongo;
-
import com.mongodb.MongoOptions;
-
import com.mongodb.DB;
-
-
-
-
-
-
-
-
-
-
-
-
-
public class DBManager {
-
-
public static final String DB_NAME = "kaimei";
-
-
public static final String MESSAGE_COLLECTION = "email";
-
-
public static DBManager getInstance(){
-
return InnerHolder.INSTANCE;
- }
-
-
-
-
-
-
private DBManager() {
-
- }
-
-
private static class InnerHolder{
-
static final DBManager INSTANCE = new DBManager();
- }
-
-
public DB getDB(){
-
return mongo.getDB(DB_NAME);
- }
-
-
private Mongo mongo;
-
-
-
public void init(final String ip, int port, int poolSize) throws java.net.UnknownHostException {
-
System.setProperty("MONGO.POOLSIZE", String.valueOf(poolSize));
-
if (mongo == null) {
-
mongo = new Mongo(ip, port);
- MongoOptions options = mongo.getMongoOptions();
-
options.autoConnectRetry = true;
- options.connectionsPerHost = poolSize;
- }
- }
- }
分享到:
相关推荐
MongoDB连接池是解决数据库连接管理和复用的一种机制,旨在提高应用的并发能力,减少创建和销毁连接的开销,同时确保在高并发场景下的稳定性和响应速度。 标题“MongoDB连接池for Java”指的是在Java环境中,针对...
然而,根据标题“基于hyperf的mongodb连接池组件暂不支持协程”,我们得知Hyperf中的MongoDB连接池组件目前并不支持协程。这个问题涉及到两个关键概念:Hyperf的并发模型和MongoDB的连接池,以及协程在PHP中的应用。...
该代码是C++ MongoDB的连接池代码实现。代码封装了一个连接池类对象,通过该对象提供的连接池来操作MongoDB,提升了性能,减少了数据库连接资源的开销。
这就是MongoDB连接池的作用,它能帮助优化资源使用,提高系统性能。 在Java中,我们可以使用如JDBC(Java Database Connectivity)对SQL数据库进行连接池管理,但MongoDB并不支持JDBC。相反,我们需要使用专门的...
在本文中,我们将深入探讨如何在Spring Boot应用中配置MongoDB连接池,同时也会涉及到Spring Boot与MyBatis以及MySQL数据库的整合。Spring Boot以其简洁的配置和强大的自动化配置功能,已经成为Java开发者构建微服务...
"Mongodb连接池、增删改查实例套装"是针对初学者的教程资源,旨在帮助他们掌握MongoDB的基础操作和最佳实践。以下是这些实例中可能涉及的关键知识点: 1. **MongoDB连接池**: - **连接池概念**:连接池是管理...
mongodb Java连接池配置 用于避免Java连接mongodb数据库数过高引起的一系列问题
MongoDB连接池的配置通常包括以下几个关键参数: 1. **userName** 和 **pwd**: 这两个属性用于设置访问MongoDB数据库的用户名和密码,如果数据库需要身份验证(authentication),则必须提供。 2. **host** 和 **...
在使用MongoDB连接池时,我们需要完成以下步骤: 1. 添加依赖:在你的`pom.xml`或`build.gradle`文件中引入MongoDB Java驱动和连接池库的依赖。例如,如果你选择HikariCP,那么对应的Maven依赖会是: ```xml ...
#### 一、MongoDB连接池概念与原理 在开始之前,我们需要理解MongoDB连接池的基本概念及其运作原理。对于初学者来说,可能由于过往使用关系型数据库的习惯,会自然地联想到数据库连接池的概念。然而,在MongoDB中,...
"Spring Boot中使用MongoDB的连接池配置的方法" 在 Spring Boot 项目中,使用 MongoDB 作为数据库时,默认情况下并没有提供连接池配置的功能。这使得开发者需要自行重写 MongoDbFactory,以实现 MongoDB 客户端连接...
python实现连接mongodb并执行相关操作,添加数据,并查询数据
在Spring Boot应用中,MongoDB的多数据源配置是一项关键任务,特别是在大型分布式系统中,可能需要连接到多个数据库以实现数据隔离、读写分离或灾难恢复策略。本篇文章将详细解析如何在Spring Boot中配置MongoDB的多...
### Python 使用 MongoDB 实践 #### 一、简介与环境配置 在进行数据分析、实时系统开发以及其他需要高效存储和检索非结构化数据的应用场景时,Python 配合 MongoDB 的使用非常普遍。MongoDB 是一个基于分布式文件...
“mongo 连接池 监控 monitor”标签指出我们将探讨MongoDB连接池的监控,这涉及到如何管理和优化数据库的连接资源。在高并发的Web应用中,有效管理数据库连接池至关重要,因为它可以提高性能并防止资源耗尽。MongoDB...
hyperf mongodb pool composer require yumufeng/hyperf-mongodb config 在/config/autoload目录里面创建文件 mongodb.php 添加以下内容 return [ 'default' => [ 'username' => env('MONGODB_USERNAME', ''), '...
基于Mgo,Mongo-go-driver这两个比较常用的MongoDB基础库,做了连接池初始化,model层服务封装,提供:初始化MongoDB连接池复用, MongoDB集合(类似MySQL的数据表)的增、删、改、查,事务、管道操作、聚合操作、...
在实际项目中,为了提高代码的健壮性和可测试性,还可以考虑加入错误处理、连接池管理、线程安全等设计。同时,虽然这个示例没有使用配置文件,但在生产环境中,通常会推荐使用配置文件来存储数据库连接信息,以增加...
在本场景中,我们讨论的是一个针对JDK 1.6的MongoDB连接所需的jar包集合。 首先,`mongo-java-driver`是官方提供的Java驱动程序,版本为3.2.2。这个驱动程序允许Java应用程序直接与MongoDB服务器通信,执行CRUD...
koa-mongo, 用于koa的MongoDB中间件,支持连接池 koa-mongokoa是一个用于koa@2的mongodb中间件,支持连接池。NB: 如果使用了,则使用 koa-mongo@0.安装npm i koa-mongo --save用法app.use