连接MongoDB

在能够对MongDB进行操作之前,需要使用BuguConnection连接到MongoDB数据库。代码如下:

BuguConnection conn = BuguConnection.getInstance();
conn.connect("192.168.0.100", 27017, "mydb", "username", "password");

也可以这样写:

BuguConnection conn = BuguConnection.getInstance();
conn.setHost("192.168.0.100").setPort(27017).setDatabase("mydb").setUsername("username").setPassword("password").connect();

如果不需要提供授权帐号,那么可以省略用户名和密码:

BuguConnection conn = BuguConnection.getInstance();
conn.connect("192.168.0.100", 27017, "mydb");

连接副本集(ReplicaSet)

如果需要连接到一组ReplicaSet,那么代码例子如下:

List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(new ServerAddress("192.168.0.100", 27017));
addrs.add(new ServerAddress("192.168.0.101", 27017));
BuguConnection conn = BuguConnection.getInstance();
conn.setReplicaSet(addrs).setDatabase("mydb").setUsername("username").setPassword("password").connect();

设置连接参数

如果不想使用默认的连接参数,那么可以自己提供一个MongoClientOptions:

MongoClientOptions options = ...
BuguConnection conn = BuguConnection.getInstance();
conn.setHost("192.168.0.100").setPort(27017).setDatabase("mydb").setOptions(options).connect();

对于各个连接参数和它们的默认值,可以查看MongoClientOptions的源代码

其中一个大家最为关心的参数,就是数据库连接数(连接池)。最新的MongoDB Java Driver默认使用100个连接,这个数目足够大了。如果你要修改这个默认的连接数,可以这样写:

MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
builder.connectionsPerHost(200); //使用200个连接
MongoClientOptions options = builder.build();
BuguConnection conn = BuguConnection.getInstance();
conn.setHost("192.168.0.100").setPort(27017).setDatabase("mydb").setUsername("username").setPassword("password").setOptions(options).connect

关闭连接

当应用程序退出的时候,可以调用close()方法关闭BuguConnection,以便立即释放所有资源。

BuguConnection.getInstance().close();

连接数据库的代码应该写在哪里?

你可以把BuguConnection类看作是配置文件。它是一个单例模式。BuguMongo框架的其它组件,如DAO,会自动使用BuguConnection类的实例作为数据库连接。

连接数据库的代码,应该写在应用程序初始化的地方。如果是开发Java Application,那么可能是在main()方法里的开始部分;如果开发的是web应用,那么可以在web.xml里添加一个监听器,比如:

<listener>
<listener-class>
com.xbwen.context.MySystemListener
</listener-class>
</listener>

MySystemListener是自己定义的一个监听器,用来在系统启动的时候进行一些初始化设置,在系统关闭的时候回收资源。示例代码如下:

package com.xbwen.context;
import com.bugull.mongo.BuguConnection;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; public class MySystemListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent event) {
//连接数据库
BuguConnection conn = BuguConnection.getInstance();
conn.connect("192.168.0.100", 27017, "test", "test", "test");
} @Override
public void contextDestroyed(ServletContextEvent event) {
//关闭数据库连接
BuguConnection.getInstance().close();
}
}

bugumongo--ConnectToMongoDB的更多相关文章

  1. BuguMongo是一个MongoDB Java开发框架,集成了DAO、Query、Lucene、GridFS等功能

    http://code.google.com/p/bugumongo/ 简介 BuguMongo是一个MongoDB Java开发框架,它的主要功能包括: 基于注解的对象-文档映射(Object-Do ...

  2. Java MongoDB 资料集合

    一.Mongodb介绍及对比 1.NoSQL介绍及MongoDB入门 http://renial.iteye.com/blog/684829 2.mongoDB 介绍(特点.优点.原理) http:/ ...

  3. Java 连接MongoDB集群的几种方式

    先决条件 先运行mongodb肯定是必须的,然后导入以下包: import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; im ...

  4. Spring boot连接MongoDB集群

    主要问题是:MongoDB集群分为复制集(replicaSet)与分片集(shardingSet),那么如何去连接这两种集群: 参考官方文档,我使用了最通用的方法:通过构造connection str ...

  5. [Java] 数据分析 -- NoSQL数据库

    MongoDB概念:与关系型数据库对应 database(数据库):数据库 collection(集合):表 document(文档):行 field(域):列/字段 注意事项 文档是一组键值(key ...

随机推荐

  1. GSM嗅探

    GSM初探 大家应该都听说过HTTP协议,又听说WEB服务,每一个服务的背后都有一个协议在工作着.所谓的没有规矩不成方圆,说的就是这个道理,每一个细小的部分,都已经规定好,只要按照协议执行,就不会出现 ...

  2. ie支持CSS3标签

    让IE6/IE7/IE8浏览器支持CSS3属性 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/w ...

  3. C#反编译工具 ILSPY-x64可动态调试-君临汉化版

    程序基于著名的ILSpy version 2.1.0.1603 汉化,并增加x64下debugging功能;初衷是网上只有一版是原作者留下的x86版本,实在不想在虚拟机里调试,只有自己动手弄一份x64 ...

  4. 配置tomcat时踩过的坑

    conf/server.xml文件有2处地方容易踩坑: 1.<HOst>标签中的appBase名字,要看清,有些修改的版本,会把这个名字改成deploy,而eclipse默认部署的是web ...

  5. linux -- 启动时启动服务或者执行命令

    运行等级 首先,我们需要知道Linux系统关于运行等级的知识.在不同的linux系统上(例如ubuntu和Fedora)这些数字与和所代表的意义可能不同,但主要的有以下几个: 单用户模式. 多用户模式 ...

  6. easy ui easyui-linkbutton 禁用、启用

    <a id="btn_update_Shop" name="btn_update_Shop" class="easyui-linkbutton& ...

  7. NSInvocation的使用(转)

    转载自:http://www.cnblogs.com/pengyingh/articles/2359199.html http://blog.iosxcode4.com/?p=125 在 iOS中可以 ...

  8. 【BZOJ 1022】 [SHOI2008]小约翰的游戏John

    Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取 ...

  9. dnf的动画脚本研究

    . 1.0x00    : 帧数           int16 2.0x02    : 总为1(?) int16 3.0x04  : 资源文件名长度 int32 4.长度+1 :   0,1(未知用 ...

  10. python字符串截取与替换的例子

    python字符串截取与替换的多种方法 时间:2016-03-12 20:08:14来源:网络 导读:python字符串截取与替换的多种方法,以冒号分隔的字符串的截取方法,python字符串替换方法, ...