连接数据库
优质
小牛编辑
146浏览
2023-12-01
连接数据库
在能够对MongDB进行操作之前,需要使用BuguFramework创建一个数据库连接,代码如下:
BuguConnection conn = BuguFramework.getInstance().createConnection();
conn.connect("192.168.0.100", 27017, "mydb", "username", "password");
也可以这样写:
BuguConnection conn = BuguFramework.getInstance().createConnection();
conn.setHost("192.168.0.100")
.setPort(27017)
.setDatabase("mydb")
.setUsername("username")
.setPassword("password")
.connect();
如果不需要提供授权帐号,那么可以省略用户名和密码:
BuguConnection conn = BuguFramework.getInstance().createConnection();
conn.connect("192.168.0.100", 27017, "mydb");
连接副本集(ReplicaSet)
如果需要连接到一组ReplicaSet,那么代码例子如下:
List<ServerAddress> serverList = new ArrayList<ServerAddress>();
serverList.add(new ServerAddress("192.168.0.100", 27017));
serverList.add(new ServerAddress("192.168.0.101", 27017));
serverList.add(new ServerAddress("192.168.0.102", 27017));
BuguConnection conn = BuguFramework.getInstance().createConnection();
conn.setServerList(serverList)
.setUsername("test")
.setPassword("test")
.setDatabase("test")
.connect();
设置连接参数
如果不想使用默认的连接参数,那么可以自己提供一个MongoClientOptions:
MongoClientOptions options = ...
BuguConnection conn = BuguFramework.getInstance().createConnection();
conn.setHost("192.168.0.100")
.setPort(27017)
.setDatabase("mydb")
.setOptions(options)
.connect();
对于各个连接参数和它们的默认值,可以查看MongoClientOptions的源代码。
其中一个大家最为关心的参数,就是数据库连接数(连接池)。在MongoDB Java Driver中,默认使用100个连接,这在一般的应用中足够了。如果你要修改这个默认的连接数,可以这样写:
MongoClientOptions options = MongoClientOptions.builder().connectionsPerHost(200).build(); //使用200个连接
BuguConnection conn = BuguFramework.getInstance().createConnection();
conn.setHost("192.168.0.100")
.setPort(27017)
.setDatabase("mydb")
.setUsername("username")
.setPassword("password")
.setOptions(options)
.connect();
关闭连接
当应用程序退出的时候,可以调用BuguFramework的destroy()方法,它会关闭数据库连接,以及释放框架中使用的其它资源。
BuguFramework.getInstance().destroy();
连接数据库的代码应该写在哪里?
BuguFramework是一个单例模式,一旦调用它的createConnection()方法创建了数据库连接,它会自动把这个连接保存起来,供bugu-mongo框架的其它组件(如DAO)使用。
连接数据库的代码,应该写在应用程序初始化的地方。如果是开发Java Application,那么可能是在main()方法里的开始部分;如果开发的是web应用,那么可以在web.xml里添加一个监听器,比如:
<listener>
<listener-class>com.xbwen.context.MySystemListener</listener-class>
</listener>
MySystemListener是自己定义的一个监听器,用来在系统启动的时候进行一些初始化设置,在系统关闭的时候回收资源。示例代码如下:
public class MySystemListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent event) {
//连接数据库
BuguConnection conn = BuguFramework.getInstance().createConnection();
conn.connect("192.168.0.100", 27017, "test", "test", "test");
}
@Override
public void contextDestroyed(ServletContextEvent event) {
//释放资源
BuguFramework.getInstance().destroy();
}
}