【转】MongoDB Java 连接池的注意事项

1.Mongo对象

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;  
  
/** 
 * Describe class DBManager here. 
 * example: 
 * 初始化:DBManager.getInstance().init("74.208.78.5",27017,200); 
 * 之后,每次通过下面的代码获取数据库对象 
 * DBManager.getInstance().getDB(); 
 * Created: Sat Dec 17 10:45:24 2011 
 * 
 * @author <a href="mailto:chenshu@chunshu">chenshu</a> 
 * @version 1.0 
 */  
public class DBManager {  
  
    public static final String DB_NAME = "kaimei";  
      
    public static final String MESSAGE_COLLECTION = "email";  
  
    public static DBManager getInstance(){  
    return InnerHolder.INSTANCE;  
    }  
  
    /** 
     * Creates a new <code>DBManager</code> 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;  
        }  
    }  
}  
 

转自 http://blog.csdn.net/csfreebird/article/details/7090526

你可以使用 Java 编程语言与 MongoDB 数据库建立连接。下面是一个简单的代码示例,演示如何连接到 MongoDB 并执行一些基本操作: ```java import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.client.MongoDatabase; import org.bson.Document; public class MongoDBJavaConnection { public static void main(String[] args) { // MongoDB 连接字符串 String connectionString = "mongodb://localhost:27017"; // 创建 MongoDB 客户端 MongoClientURI uri = new MongoClientURI(connectionString); MongoClient mongoClient = new MongoClient(uri); // 连接到数据库 MongoDatabase database = mongoClient.getDatabase("your_database_name"); // 在集合中插入文档 Document document = new Document("name", "John Doe") .append("age", 30) .append("email", "johndoe@example.com"); database.getCollection("your_collection_name").insertOne(document); // 在集合中查询文档 Document query = new Document("name", "John Doe"); Document result = database.getCollection("your_collection_name").find(query).first(); System.out.println(result); // 关闭连接 mongoClient.close(); } } ``` 请确保你已经将 MongoDBJava 驱动程序添加到你的项目依赖中。上述示例代码使用的是 MongoDB Java 驱动程序的默认版本。 你需要将 `your_database_name` 替换为你要连接的实际数据库名称,将 `your_collection_name` 替换为你要执行操作的集合名称。然后,你可以根据需要修改代码以适应你的业务逻辑。 希望这可以帮助你开始使用 MongoDBJava 进行连接和操作!如有任何进一步问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值