MongoDB Java ORM 的设想

php中文网
发布: 2016-06-07 16:26:07
原创
1151人浏览过

搞技术的手艺人都有个习惯,没事喜欢瞎折腾。我也不例外,懂点Java、ORM 之类的技术,最近又有点迷上了MongoDB,目前对MongoDB了解的还不算太多,但兴趣到挺大。有句俗语:瘾大水平低。通常是指某人某项技艺不高,但偏偏喜欢耍弄这项自己不精的技艺。这句话

搞技术的手艺人都有个习惯,没事喜欢瞎折腾。我也不例外,懂点java、orm 之类的技术,最近又有点迷上了mongodb,目前对mongodb了解的还不算太多,但兴趣到挺大。有句俗语:瘾大水平低。通常是指某人某项技艺不高,但偏偏喜欢耍弄这项自己不精的技艺。这句话对我现在挺适合。

why
ORM给众多的Javaer留下了很多美好的印象,原因只有一个“方便”,口水:虽然Hibernate也是ORM,但使用起来并不方便。

打算自己写个类里面封装一套CRUD的方法,用这个类去调用 BasicDBObject ,DBCursor 等一些MongoDB Java API 里面的类。 现在的想法暂且不是很完美,但是可以简化一些web应用的开发,说一个场景:用户输入表单信息,将输入的表单信息,通过action层转换成表单对象,对象传入Service层操作具体的业务逻辑,再传入底层通过API操作MongoDB,这是一个常见的场景。

但是如果一个表单上有很多字段,那么对象到了操作MongoDB的时候将需要手工取出来,在一个个的put进去,一个页面上有20、30个字段需要存入,这么一来一旦这样的场景多了,我会崩溃的。如果还要来输入的数据从MongoDB中在get出来,还要一个个的取,我会更加崩溃。。。。。。。这样的假象让我不得不去折腾一下了。

场景如图所示:
http://1aqpcg.bay.livefilestore.com/y1pnkPGdc-f_cm0xY9qX96lvUQh0dpDHopOYf1zhoZ0hSBWCuyqxBFyi5ddDGQEKTIGj3MaAH3iGxf91JkWBdMeYwN8Y5UTjXhf/mongodb_orm.png

注释:用户通过HTML/JSP前端页面提交参数,Action层将参数转换成对象传到 Service层,Service层再 传 对象 到DAO层,DAO层 把对象转换成参数 调用API ,到了调用底层API的时候需要一个个get/put参数,如果一多就是个悲剧啊。

how
就因为这样让我想到折腾可以进行的办法,通过通过java反射加上SDK中注释的功能,这样可以灵活的操作,废话少说,进行介绍具体怎么反射和采用注释的折腾过程,主要思路如下:

1.主要实现程序  MyMongoDBORMImpl
class MyMongoDBORMImpl {
     // 添加数据
    public  void addObject(Object clazz) {     //传入 new 对象,获得表名和对象实例化参数
        Map, ?>  map= MappingTools.copyABeanToMap(clazz );  //调用自己写的 映射工具
        System.out.println(map  );
        Iterator> val=map.values().iterator();  // 通过反射得到 new 对象中的值
        Iterator> key=map.keySet().iterator(); // 通过反射得到 new 对象中的属性
        BasicDBObject doc = new BasicDBObject();
        while (key.hasNext()){
            doc.put(key.next().toString()  , val.next()   );  // 对 MongoDB BasicDBObject 对象 进行赋值
        }
         coll.insert(doc);
    }
}

2.测试程序  TestMongoDBORMCase
public class TestMongoDBORMCase {
   
    public static void main(String[] args) throws Exception {
         MyMongoDBORMImpl   impl= new MyMongoDBORMImpl();
            // 实例化Users  对象,并且插入
        Users  user= new Users();
        user.setUsername("javabloger");
        user.setId(12);
        user.setPassword("www.javabloger.com ");
        user.setDept("dept");
                impl.addObject(user  );

       // 实例化TestPojo  对象,并且插入
        TestPojo  pojo1= new TestPojo();
        pojo1.setIds(2);
        pojo1.setUsernames("username–javabloger");
                  impl.addObject(pojo1  );
    }
}

主要代码介绍:
1.Users.java、TestPojo.java 是pojo对象,里面set/get一些参数值;
2.ORMappingTools.java 是pojo 对象和 MongoDB对象映射的工具类;
3.ColumnMapping.java 是 注释程序,可以让对象属性和表属性更加灵活;
4.MyMongoDBORMImpl.java 是一个封装 MongoDB API 的程序;
5.TestMongoDBORMCase.java  测试程序。

详细内容如图所示:
http://1aqpcg.bay.livefilestore.com/y1podfjBkRIXcs9fMoPanrQC5R1As8ed2qte5LhXailB-aOt0QCEhiw1pCLh9bVFkRTyZm8bSiR9CM5JX5tEHKaYXxUq6ZDBoBC/MongoDB_ORM_class_uml.png

从这里下载代码 MongoDBJavaORM.zip 

立即学习Java免费学习笔记(深入)”;

还可以从这里下载代码 MongoDBJavaORM.zip 

因为只是草稿,代码有些粗糙里面只写了一个添加的方法,主要想把精力还是在构思上,这也许只是个开始,有必要的话下面将写一个小工具完善这个想法,给大家进行分享。

相关文章:
mongodb 入门 介绍
MongoDB 集群
Java操作 MongoDB NoSQL数据库

–end–

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号