在Mongo-java-driver3.x中,getDB的疑问



  • getDB()方法已deprecated,但是GridFS()仍然用到这个。

    举例说明一下,代码如下:

    MongoClient Client =new MongoClient();

    DB db=Client.getDB(dbname);

    这个时间候,会提示:getDB(dbname)被deprecated。并有一条黄色的中线划掉。

    GridFS没过时,而其调用方法:GridFS fs=new GridFS(db); GridFS()的传参必须是db,不能是其他类型的参数。

    我的问题是:如果getDB(dbname) 是已经过时,而GridFS没过时的,那么为什么在没有过时的GridFS中仍然使用这个过时getDB作参数?

    并且getDB是GridFS的唯一的参数,这很奇怪。


  • 註冊用戶

    這裡有提到 http://mongodb.github.io/mongo-java-driver/3.4/driver-async/tutorials/gridfs/

    看起來3.X是要改用 GridFSBuckets

    MongoDatabase myDatabase = mongoClient.getDatabase("mydb");
    GridFSBucket gridFSBucket = GridFSBuckets.create(myDatabase);



  • @yea

    谢谢。

    但是目前为止,GridFS 仍然没有标注过时。

    GridFSBuckets好像在3.1还是3.2版本里就出现了。

    这种java驱动,升版本,改类与接口名称的做法,对开发人员是一种挑战。


  • 註冊用戶

    @asd

    java 棄用方法改用新的是很常見的,而且若是想一直使用最新版的 MongoDB,因應新版 driver 來調整是必要的



  • @yea 

    有些方法已经使用在专案上,而专案而上线稳定运行,这个时候,要修改方法接口会考虑很多。


  • 註冊用戶

    一般來說已經穩定運行的專案通常不太建議更換新的驅動.

    除非有什麼特別的原因非一直保持最新的驅動。

    以現況來說如果想盡可能不動到原本的程式碼又希望可以保持最新的驅動.

    哪麼儘管哪個方法已經deprecated應該還是可以放心大膽的用。

    通常的情況java的方法倍deprecated到真的不能使用哪個週期是非常長的

    至於要保持原有程式碼又用最新驅動,還是跟著驅動修正程式.

    我覺得就看他會把方法改掉的原因在你專案上的重要程度吧


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待