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
相关推荐
mongodb Java连接池配置 用于避免Java连接mongodb数据库数过高引起的一系列问题
标题“MongoDB连接池for Java”指的是在Java环境中,针对MongoDB数据库实现的连接池解决方案。这种解决方案通常基于特定的Java驱动程序,如MongoDB的Java驱动程序(com.mongodb.client.MongoClients),它提供了连接...
总结起来,Java实现MongoDB的数据库连接池主要是通过配置连接池参数,并利用MongoDB的Java驱动库创建和管理连接。这不仅能优化数据库性能,还能提升应用程序的稳定性。同时,合理设置连接池参数,以及适当地管理和...
本示例是关于如何在Java应用中使用MongoDB数据库连接池,确保在高并发环境下数据库操作的稳定性和性能。我们将深入探讨连接池的概念、MongoDB的Java驱动程序以及如何实现安全验证。 首先,连接池是管理数据库连接的...
该rar包中包括MOngoDB数据库操作基本的增删改查,以及在CMD命令行中怎么配置MOngodb和增删改查,还有就是连接mongoDB的jar包和详细的操作文档,本来想上传NOde.js来着,可是只能上传60兆,只能放弃了,不过这些已经...
MongoDB的连接池通过创建并维护一组数据库连接来实现。当应用需要一个连接时,可以从池中获取,使用完毕后归还,而不是每次操作都新建和关闭连接。这大大减少了建立和关闭连接的开销,提高了整体效率。 `...
它结合了多种技术,包括Mina(一个用于构建高性能、高可用性的网络应用程序的Java框架)、MongoDB(一个流行的NoSQL数据库系统)、MyBatis(一个Java持久层框架)以及Proxool(一个数据库连接池实现)。这个实例主要...
在实际应用中,你可能还需要考虑异常处理、连接池管理、事务支持、性能优化等方面。同时,为了提高代码的可读性和可维护性,可以使用Spring Data MongoDB这样的高级框架,它提供了更简洁的API和自动配置功能。 总之...
在实际开发中,你可能还需要处理异常,使用连接池以提高性能,以及执行更复杂的查询和操作。MongoDB Java 驱动提供了丰富的 API,允许你灵活地操作文档、集合和数据库,从而充分利用 MongoDB 的功能。
在Java编程环境中,连接MongoDB数据库通常需要特定的驱动程序,这些驱动程序以JAR(Java Archive)文件的形式提供。MongoDB官方提供了Java驱动程序,使得开发者能够方便地在Java应用中集成MongoDB功能。本篇文章将...
在Java环境中,我们通常使用MongoDB的Java驱动程序来实现这种连接。本文将深入探讨如何使用Java API连接MongoDB,并执行基本的操作。 首先,确保已经在项目中引入了MongoDB的Java驱动程序。如果使用Maven,可以在`...
Java JSP数据库连接大全是关于如何在Java Web应用程序中与各种数据库进行交互的全面指南。在JSP(Java Server Pages)开发中,数据库连接是必不可少的一部分,它允许开发者存储、检索和更新数据。本资源涵盖了7种...
在 Spring Boot 项目中,使用 MongoDB 作为数据库时,默认情况下并没有提供连接池配置的功能。这使得开发者需要自行重写 MongoDbFactory,以实现 MongoDB 客户端连接的参数配置扩展。在本文中,我们将介绍如何在 ...
Spring Boot默认集成了MongoDB Java驱动和Spring Data MongoDB,但并未直接提供连接池的配置。通常我们会使用如MongoDB Java驱动的`MongoClientSettings`来配置连接池,比如使用`...
在 Java 开发环境中,可以通过 MongoDB 的 Java 驱动程序来实现对 MongoDB 数据库的操作。本文将详细介绍如何在 Java 中简单操作 MongoDB。 1. **Java 开发环境配置** - **系统**:Windows - **IDE**:Eclipse 或...
在实际项目中,你可能需要处理更复杂的查询和事务,以及错误处理和连接池管理等高级话题。学习更多关于MongoDB的官方文档和社区资源,如CSDN博客(http://blog.csdn.net/dream_broken/article/details/36014733),...
1. Connection Pooling(连接池):在大型应用中,为了提高性能和效率,通常使用连接池来管理数据库连接。例如,C3P0、HikariCP、Apache DBCP等。 2. JPA(Java Persistence API)和Hibernate:JPA是Java EE提供的...
MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...
MongoDB Java驱动程序是Java开发者用来与MongoDB数据库进行交互的一种关键工具。它提供了一组丰富的API,使得在Java应用程序中执行CRUD(创建、读取、更新、删除)操作变得简单而高效。MongoDB是一个分布式文档存储...
MongoDB 是一个流行的开源、分布式文档数据库,...通过阅读和学习这个源代码包,开发者不仅可以了解 MongoDB Java 驱动的内部实现,还能提升对 MongoDB 数据库操作的理解,从而编写出更高效、更稳定的 Java 应用程序。