Mongodb连接方法学习

本文介绍了一个用于管理MongoDB连接的实用工具类,通过单例模式确保全局唯一实例,并提供了初始化连接、获取数据库实例和关闭连接的方法。支持从配置文件读取服务器地址、端口号和连接池大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. public class MongoDBUtil {  
  2.     //唯一的Mongo实例  
  3.     private Mongo mongo;  
  4.       
  5.     //采用单例模式  
  6.     private MongoDBUtil(){}  
  7.       
  8.     private static class InnerHolder{  
  9.         static final MongoDBUtil INSTANCE = new MongoDBUtil();  
  10.     }  
  11.       
  12.     public static MongoDBUtil getInstance(){  
  13.         return InnerHolder.INSTANCE;  
  14.     }  
  15.       
  16.     /** 
  17.      * 初始化Mongodb连接 
  18.      * @throws UnknownHostException 
  19.      * @throws MongoException 
  20.      */  
  21.     public void init() throws UnknownHostException, MongoException{  
  22.         int poolSize = ConfigUtil.getInstance().getPoolSize(); //从配置文件中读取连接个数  
  23.           
  24.         if(poolSize == -1){  
  25.             poolSize = 10000;  
  26.         }  
  27.           
  28.         System.setProperty("MONGO.POOLSIZE", String.valueOf(poolSize));  
  29.           
  30.         if(this.mongo == null){  
  31.             //System.out.println("1st init Mongo instance"); //mongo实例仅实例化一次  
  32.               
  33.             //从配置文件中读取服务器地址及端口号  
  34.             String serverIp = ConfigUtil.getInstance().getServerIP();  
  35.             int portNum = ConfigUtil.getInstance().getPortNum();  
  36.               
  37.             mongo = new Mongo(serverIp, portNum);  
  38.             MongoOptions options = mongo.getMongoOptions();  
  39.             options.autoConnectRetry = true;  
  40.             options.connectionsPerHost = poolSize;  
  41.         }  
  42.     }  
  43.       
  44.     /** 
  45.      * 获取DB实例 
  46.      * @param dbName 
  47.      * @return 
  48.      */  
  49.     public DB getDB(String dbName){  
  50.         if(dbName != null && !dbName.equals("")){  
  51.             return this.mongo.getDB(dbName);  
  52.         }else{  
  53.             return null;  
  54.         }  
  55.     }  
  56.       
  57.     /** 
  58.      * 关闭Mongodb 
  59.      */  
  60.     public void close(){  
  61.         if(this.mongo != null){  
  62.             this.mongo.close();  
  63.             this.mongo = null;  
  64.         }  
  65.     }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值