国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java實現mongodb的數據庫連接池

2019-11-26 14:42:45
字體:
來源:轉載
供稿:網友

MongoDB是介于關系數據庫和非關系數據庫之間的一種產品,文件的存儲格式為BSON(一種JSON的擴展),這里就主要介紹Java通過使用mongo-2.7.3.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   * @Description: 獲取表tableName的鏈接DBCollection   */  public DBCollection getDBCollection(String tableName) {   return db.getCollection(tableName);  }    /**   * @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)方法即可。

以上就是本文的全部內容,希望本文所述對大家學習java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蕉岭县| 无锡市| 屏边| 莱阳市| 石嘴山市| 温宿县| 襄樊市| 乌兰浩特市| 瑞安市| 武夷山市| 伊宁县| 南阳市| 清丰县| 萨嘎县| 贡山| 灵武市| 贵南县| 寿宁县| 疏附县| 都昌县| 屏东县| 雷波县| 苏州市| 华蓥市| 砚山县| 海阳市| 吴堡县| 阿城市| 铜川市| 墨竹工卡县| 胶州市| 从江县| 永平县| 南充市| 和田市| 成安县| 六枝特区| 大城县| 界首市| 闵行区| 中牟县|