欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MongoDB Java Driver 源码分析(10):com.mongodb 总结

程序员文章站 2022-03-02 16:12:37
...
  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 包中的几个类之间的主要关系如下图所示:

  MongoDB Java Driver 源码分析(10):com.mongodb 总结
            
    
    博客分类: MongoDB Driver mongodbJavadriver数据库源码

  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 方法