最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)mongodb的數(shù)據(jù)庫(kù)連接池

 更新時(shí)間:2015年12月30日 11:44:47   作者:xiaojimanman  
這篇文章主要介紹了基于java實(shí)現(xiàn)mongodb的數(shù)據(jù)庫(kù)連接池,Java通過使用mongo-2.7.3.jar包實(shí)現(xiàn)mongodb連接池,感興趣的小伙伴們可以參考一下

MongoDB是介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的一種產(chǎn)品,文件的存儲(chǔ)格式為BSON(一種JSON的擴(kuò)展),這里就主要介紹Java通過使用mongo-2.7.3.jar包實(shí)現(xiàn)mongodb連接池,具體的java代碼實(shí)現(xiàn)如下:

數(shù)據(jù)庫(kù)連接池配置參數(shù):

 /** 
 *@Description: mongo連接池配置文件 
 */ 
package cn.lulei.mongo.pool; 
 
public class MongoConfig { 
  
 private static String userName;//用戶名 
 private static String pwd;//密碼 
 private static String[] host;//主機(jī)地址 
 private static int[] port;//端口地址 
 private static String dbName;//數(shù)據(jù)庫(kù)名 
 private static int connectionsPerHost = 20;//每臺(tái)主機(jī)最大連接數(shù) 
 private static int threadsAllowedToBlockForConnectionMultiplier = 10;//線程隊(duì)列數(shù) 
 private static boolean authentication = false;//是否需要身份驗(yàn)證 
  
 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; 
 } 
} 

數(shù)據(jù)庫(kù)連接池管理類:

 /** 
 *@Description: mongo數(shù)據(jù)庫(kù)連接池管理類 
 */ 
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 
 * 實(shí)例化dbName一個(gè)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()); 
  } 
 } 
  
 /** 
  * 使用配置參數(shù)實(shí)例化 
  */ 
 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 { 
   //服務(wù)列表 
   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])); 
   } 
   //連接池參數(shù)設(shè)置 
   MongoOptions options = new MongoOptions(); 
   options.connectionsPerHost = MongoConfig.getConnectionsPerHost(); 
   options.threadsAllowedToBlockForConnectionMultiplier = MongoConfig.getThreadsAllowedToBlockForConnectionMultiplier(); 
   mongo = new Mongo(replicaSetSeeds, options); 
   //從服務(wù)器可讀 
   mongo.setReadPreference(ReadPreference.SECONDARY); 
  } catch (Exception e){ 
   e.printStackTrace(); 
  } 
 } 
} 

下面通過一個(gè)簡(jiǎn)單的測(cè)試類,來看下如何使用這個(gè)連接池~

 /** 
 *@Description:mongo測(cè)試 
 */ 
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"); 
 } 
 
} 

在使用上述管理類時(shí),只需要初始化MongoConfig類即可。對(duì)類MongoManager的實(shí)例話,既可以使用MongoConfig的配置也可以自己通過參數(shù)來設(shè)置,每次獲取DBCollection 時(shí),只需要調(diào)用getDBCollection(String tableName)方法即可。

以上就是本文的全部?jī)?nèi)容,希望本文所述對(duì)大家學(xué)習(xí)java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 使用Logback日志保存到相對(duì)路徑的操作

    使用Logback日志保存到相對(duì)路徑的操作

    這篇文章主要介紹了使用Logback日志保存到相對(duì)路徑的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 詳解maven安裝教程以及解決安裝不成功的解決辦法

    詳解maven安裝教程以及解決安裝不成功的解決辦法

    這篇文章主要介紹了詳解maven安裝教程以及解決安裝不成功的解決辦法,詳細(xì)的介紹了幾種解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-12-12
  • Java編程代碼性能優(yōu)化

    Java編程代碼性能優(yōu)化

    本文介紹了 Java 代碼優(yōu)化的過程,總結(jié)了優(yōu)化 Java 程序的一些最佳實(shí)踐,分析了進(jìn)行優(yōu)化的方法,并解釋了性能提升的原因,需要的朋友可以參考下
    2015-11-11
  • 基于Mybatis Plus實(shí)現(xiàn)多表分頁(yè)查詢的示例代碼

    基于Mybatis Plus實(shí)現(xiàn)多表分頁(yè)查詢的示例代碼

    這篇文章主要介紹了基于Mybatis Plus實(shí)現(xiàn)多表分頁(yè)查詢的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 淺談SSH框架中spring的原理

    淺談SSH框架中spring的原理

    下面小編就為大家?guī)硪黄獪\談SSH框架中spring的原理。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • Maven中兩個(gè)命令clean 和 install的使用

    Maven中兩個(gè)命令clean 和 install的使用

    Maven是一個(gè)項(xiàng)目管理和自動(dòng)構(gòu)建工具,clean命令用于刪除項(xiàng)目中由先前構(gòu)建生成的target目錄,install命令用于將打包好的jar包安裝到本地倉(cāng)庫(kù)中,供其他項(xiàng)目依賴使用,下面就來詳細(xì)的介紹一下這兩個(gè)命令
    2024-09-09
  • spring boot 全局異常處理方法匯總

    spring boot 全局異常處理方法匯總

    這篇文章主要介紹了spring boot 全局異常處理方法匯總,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Ubuntu安裝jdk8常用方法流程解析

    Ubuntu安裝jdk8常用方法流程解析

    這篇文章主要介紹了Ubuntu安裝jdk8常用方法流程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Spring中@Conditional注解的詳細(xì)講解及示例

    Spring中@Conditional注解的詳細(xì)講解及示例

    這篇文章主要介紹了Spring中@Conditional注解的詳細(xì)講解及示例,@Conditional是Spring4新提供的注解,它的作用是按照一定的條件進(jìn)行判斷,滿足條件給容器注冊(cè)bean,需要的朋友可以參考下
    2023-11-11
  • 在spring?boot3中使用native?image的最新方法

    在spring?boot3中使用native?image的最新方法

    這篇文章主要介紹了在spring?boot3中使用native?image?,今天我們用具體的例子來給大家演示一下如何正確的將spring boot3的應(yīng)用編譯成為native image,需要的朋友可以參考下
    2023-01-01

最新評(píng)論

成安县| 仁寿县| 宣恩县| 元朗区| 抚顺县| 曲沃县| 茶陵县| 西宁市| 乐东| 信宜市| 牙克石市| 翁源县| 兴仁县| 万安县| 高邮市| 彭山县| 平武县| 宁武县| SHOW| 商丘市| 读书| 滁州市| 昔阳县| 沈丘县| 平定县| 奉新县| 兴国县| 拉萨市| 昌江| 西乡县| 鹰潭市| 石景山区| 翼城县| 徐汇区| 禄丰县| 闻喜县| 临朐县| 庐江县| 大埔县| 惠安县| 三都|