日期:2014-05-16  浏览次数:20518 次

MongoDB Java Driver 源码分析(10):com.mongodb 总结
  com.mongodb 是 MongoDB Driver 核心类所在的包。其中 Mongo 类是整个 Driver 的入口点。

  下面列出之前对这个包中的几个主要类的介绍:

  Mongo 表示一个数据库实例,可能包含多个 Server 。
  http://xxing22657-yahoo-com-cn.iteye.com/blog/1236186

  DB 表示一个数据库连接。
  http://xxing22657-yahoo-com-cn.iteye.com/blog/1291183

  DBApiLayer 继承 DB 类。DB 操作的底层实现,通过 Mongo 对象间接调用。
  http://xxing22657-yahoo-com-cn.iteye.com/blog/1418647

  DBTCPConnector 表示 TCP 数据连接的类。
  http://xxing22657-yahoo-com-cn.iteye.com/blog/1416331

  ReplicaSetStatus 表示集群状态的类。
  http://xxing22657-yahoo-com-cn.iteye.com/blog/1424055

  DBCollection 表示数据集合的抽象类。
  http://xxing22657-yahoo-com-cn.iteye.com/blog/1255181

  DBPort 表示数据连接端口,维护一个 Socket。
  http://xxing22657-yahoo-com-cn.iteye.com/blog/1424140

  DBCursor 用于遍历 find() 等查询操作的返回结果。
  http://xxing22657-yahoo-com-cn.iteye.com/blog/1269739

几个类之间的主要关系

  com.mongodb 包中的几个类之间的主要关系如下图所示:

  

  Mongo 对其他类的依赖:
  DB 和 DBApiLayer:getDB 的返回值类型是 DB,但返回的实际上是 DBApiLayer 类的实例
  DBTCPConnector:getConnector 返回的是 DBTCPConnector 类的实例
  ReplicaSetStatus:getReplicaSetStatus 返回的是 ReplicaSetStatus 类的实例

  DB 对其他类的依赖:
  DBCollection:createCollection 等方法返回的是 DBCollection 类的实例

  DBApiLayer 对其他类的依赖:
  DB:DBApiLayer 继承了 DB 类
  DBCollection:DBApiLayer.MyCollection 继承了 DBCollection

  DBTCPConnector 对其他类的依赖:
  DBPort:say,call 等方法中调用了 DBPort 的 say,call 等方法

  ReplicaSetStatus 对其他类的依赖:
  DBPort:内部类 Node 的 update 方法调用了 DBPort 的 runCommand 方法

  DBCollection 对其他类的依赖:
  DBCursor:find 方法构造并返回 DBCursor 类的实例

com.mongodb.gridfs 对 com.mongodb 的依赖

  com.mongodb.gridfs 对 com.mongodb 的依赖主要表现为 GridFS、GridFSDBFile、GridFSInputFile  对 DB、DBCollection、DBCursor 的依赖。

  其中:

  GridFS 的 getDB 方法的返回值类型是 DB
  GridFS 的 getFileList 方法的返回值类型是 DBCursor

  GridFS 和 GridFSDBFile 的 find、remove 等方法调用了 DBCollection 的 find、remove 等相应的方法。
  GridFSInput 的 _dumpBuffer 方法调用了 DBCollection 的 save 方法