MongoDB是介于关系数据库和非关系数据库之间的一种产品,文件的存储格式为BSON(一种JSON的扩展)
这里就主要介绍一样在Java中通过使用mongo-2.7.3.jar这个jar包实现mongodb连接池的实现,具体的java代码实现如下:
数据库连接池配置参数:
/** *@Description: mongo连接池配置文件 */ package cn.lulei.mongo.pool; public class MongoConfig { private static String userName;//用户名 private static String pwd;//密码 private static String[] host;//主机地址 private static int[] port;//端口地址 private static String dbName;//数据库名 private static int connectionsPerHost = 20;//每台主机最大连接数 private static int threadsAllowedToBlockForConnectionMultiplier = 10;//线程队列数 private static boolean authentication = false;//是否需要身份验证 public static String getUserName() { return userName; } public static void setUserName(String userName) { MongoConfig.userName = userName; } public static String getPwd() { return pwd; } public static void setPwd(String pwd) { MongoConfig.pwd = pwd; } public static String[] getHost() { return host; } public static void setHost(String[] host) { MongoConfig.host = host; } public static int[] getPort() { return port; } public static void setPort(int[] port) { MongoConfig.port = port; } public static String getDbName() { return dbName; } public static void setDbName(String dbName) { MongoConfig.dbName = dbName; } public static int getConnectionsPerHost() { return connectionsPerHost; } public static void setConnectionsPerHost(int connectionsPerHost) { MongoConfig.connectionsPerHost = connectionsPerHost; } public static int getThreadsAllowedToBlockForConnectionMultiplier() { return threadsAllowedToBlockForConnectionMultiplier; } public static void setThreadsAllowedToBlockForConnectionMultiplier( int threadsAllowedToBlockForConnectionMultiplier) { MongoConfig.threadsAllowedToBlockForConnectionMultiplier = threadsAllowedToBlockForConnectionMultiplier; } public static boolean isAuthentication() { return authentication; } public static void setAuthentication(boolean authentication) { MongoConfig.authentication = authentication; } }
数据库连接池管理类:
/** *@Description: mongo数据库连接池管理类 */ package cn.lulei.mongo.pool; import java.util.ArrayList; import java.util.List; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.Mongo; import com.mongodb.MongoOptions; import com.mongodb.ReadPreference; import com.mongodb.ServerAddress; public class MongoManager { private static Mongo mongo; private DB db; static{ init(); } /** * @param dbName * @param userName * @param pwd * 实例化dbName一个DB */ public MongoManager(String dbName, String userName, String pwd) { if (dbName == null || "".equals(dbName)) { throw new NumberFormatException("dbName is null"); } db = mongo.getDB(dbName); if(MongoConfig.isAuthentication() && !db.isAuthenticated()){ if (userName == null || "".equals(userName)) { throw new NumberFormatException("userName is null"); } if (pwd == null || "".equals(pwd)) { throw new NumberFormatException("pwd is null"); } db.authenticate(userName, pwd.toCharArray()); } } /** * 使用配置参数实例化 */ public MongoManager() { this(MongoConfig.getDbName(), MongoConfig.getUserName(), MongoConfig.getPwd()); } /** * @param tableName * @return * @Date:2014-3-19 * @Author:lulei * @Description: 获取表tableName的链接DBCollection */ public DBCollection getDBCollection(String tableName) { return db.getCollection(tableName); } /** * @Date:2014-3-19 * @Author:lulei * @Description: mongo连接池初始化 */ private static void init() { if (MongoConfig.getHost() == null || MongoConfig.getHost().length == 0) { throw new NumberFormatException("host is null"); } if (MongoConfig.getPort() == null || MongoConfig.getPort().length == 0) { throw new NumberFormatException("port is null"); } if (MongoConfig.getHost().length != MongoConfig.getPort().length) { throw new NumberFormatException("host's length is not equals port's length"); } try { //服务列表 List<ServerAddress> replicaSetSeeds = new ArrayList<ServerAddress>(); for (int i = 0; i < MongoConfig.getHost().length; i++) { replicaSetSeeds.add(new ServerAddress(MongoConfig.getHost()[i], MongoConfig.getPort()[i])); } //连接池参数设置 MongoOptions options = new MongoOptions(); options.connectionsPerHost = MongoConfig.getConnectionsPerHost(); options.threadsAllowedToBlockForConnectionMultiplier = MongoConfig.getThreadsAllowedToBlockForConnectionMultiplier(); mongo = new Mongo(replicaSetSeeds, options); //从服务器可读 mongo.setReadPreference(ReadPreference.SECONDARY); } catch (Exception e){ e.printStackTrace(); } } }
下面通过一个简单的测试类,来看下如何使用这个连接池~
/** *@Description: mongo测试 */ package cn.lulei.mongo.test; import cn.lulei.mongo.pool.MongoConfig; import cn.lulei.mongo.pool.MongoManager; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub String[] host = {"127.0.0.1"}; int[] port = {27001}; MongoConfig.setHost(host); MongoConfig.setPort(port); MongoConfig.setDbName("novel"); MongoManager mongoManager = new MongoManager(); mongoManager.getDBCollection("chapter"); } }
在使用上述管理类时,只需要初始化MongoConfig类即可。对类 MongoManager的实例话,既可以使用MongoConfig的配置也可以自己通过参数来设置,每次获取DBCollection 时,只需要调用 getDBCollection(String tableName)方法即可
出处: http://blog.csdn.net/xiaojimanman/article/details/22652239
相关推荐
一个简单的测试工程,java使用mongodb数据库连接池,使用mongodb安全验证; 初始化连接池的信息;学习demo;代码
mongodb Java连接池配置 用于避免Java连接mongodb数据库数过高引起的一系列问题
主要介绍了基于java实现mongodb的数据库连接池,Java通过使用mongo-2.7.3.jar包实现mongodb连接池,感兴趣的小伙伴们可以参考一下
该rar包中包括MOngoDB数据库操作基本的增删改查,以及在CMD命令行中怎么配置MOngodb和增删改查,还有就是连接mongoDB的jar包和详细的操作文档,本来想上传NOde.js来着,可是只能上传60兆,只能放弃了,不过这些已经...
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。这篇文章主要介绍了SpringBoot整合Druid数据库连接池的方法,需要的朋友可以参考下
数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb建议4.0(不要使用4.2及其已上版本,否则有部分api需要自行调整) 一个简单的外卖系统,包括手机端,后台管理,api 基于spring boot和...
mongodb是一个非关系的数据库类型。与关系型数据库不同。如:sql 为了可以使用不一样的数据库连接池、需要导入不同的jar包
MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现...基本命令,增删改查,高级查询,Java连接MongoDB,MongoDB连接池,综合案例-网站点击日志分析,日志写入与查询
前言: 一个简单的外卖系统,包括手机端,后台管理,api ...数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb建议4.0(不要使用4.2及其已上版本,否则有部分api需要自行调整)
前言: 一个简单的外卖系统,包括手机端,后台管理,api ...数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb建议4.0(不要使用4.2及其已上版本,否则有部分api需要自行调整)
数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb建议4.0(不要使用4.2及其已上版本,否则有部分api需要自行调整) 模块 flash-waimai-mobile 手机端站点 flash-waimai-manage后台管理...
前言: 一个简单的外卖系统,包括手机端,后台管理,api ...数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb建议4.0(不要使用4.2及其已上版本,否则有部分api需要自行调整)
核心框架:Spring Boot 数据库层:Spring data jpa/Spring data mongodb 数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5 以上,Mongodb 建议 4.0
数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb建议4.0(不要使用4.2及其已上版本,否则有部分api需要自行调整) 模块 flash-waimai-mobile 手机端站点 flash-waimai-manage后台...
数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb建议4.0(不要使用4.2及其已上版本,否则有部分api需要自行调整) 3. flash-waimai-mobile 手机端站点 flash-waimai-manage后台管理系统...
数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb建议4.0(不要使用4.2及其已上版本,否则有部分api需要自行调整) 模块 flash-waimai-mobile 手机端站点 flash-waimai-manage后台管理...
不含测试数据和测试图片, 测试数据请访问 ...测试图片请访问 ...数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.5以上,Mongodb建议4.0(不要使用4.2及其已上版本,否则有部分api需要自行调整)
高并发复用数据库链接技术详解之数据库连接池 类加载器的高级特性(自定义类加器实现加密解密) iBATIS开源主流框架(实现半自动化hibernate) 企业实用技能之详解(眼睛横纹模式验证码防止恶意登陆) 动态页面的静态化...
数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql5.7 flash-waimai-mobile 手机端站点 flash-waimai-manage后台管理系统 flash-waimai-api java接口服务 flash-waimai-core 底层核心模块 flash-...
数据库连接池:Druid 缓存:Ehcache 前端:Vue.js 数据库:mysql8以上,Mongodb4.0(不要使用最新版4.2) 模块 qinlouyue-mobile 手机端站点 qinlouyue-manage后台管理系统 qinlouyue-api java接口服务 qinlouyue-core ...