`
zhaoshijie
  • 浏览: 2261987 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Morphia一个nosql的ORM框架

 
阅读更多
关键字:Morphia一个nosql的ORM框架


官方API帮助文档及资料:http://code.google.com/p/morphia/w/listhttp://api.mongodb.org/java/2.0/


近来在关注nosql,看了一个用c++写的MongoDB的实现。感觉还不错,就是代码风格不太符合java的。无意间看到了Morphia这个东西。(http://code.google.com/p/morphia/)。发现对MongoDB的api进行了封装,类似hibernate。如果使用过hinernate再使用它会上手很快。想使用它依赖的jar包:mongo-2.3.jar,morphia-0.97.1.jar,proxytoys-1.0.jar,asm.jar,cglib-2.1.3.jar。

首先对POJO进行注解配置。例子如下:
package domain;

import com.google.code.morphia.annotations.Entity;
import com.google.code.morphia.annotations.Id;

@Entity
public class Entry {
    @Id
    private String id;
    private String name;

    public Entry() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

编写dao层:
package dao;

import java.io.Serializable;
import com.google.code.morphia.DAO;
import com.google.code.morphia.Morphia;
import com.mongodb.Mongo;
import domain.Entry;

public class EntryDAO extends DAO<Entry, Serializable> {
    public EntryDAO(Morphia morphia, Mongo mongo) {
        super(mongo, morphia, "entries");
    }
}

泛型DAO设计,经典。



做个测试:
package test;

import java.net.UnknownHostException;
import java.util.List;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.query.Query;
import com.google.code.morphia.query.QueryResults;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

import dao.EntryDAO;
import domain.Entry;

public class MorphiaTest {
    public static void main(String[] args) throws UnknownHostException,
            MongoException {
        Mongo mongo = new Mongo();
        Morphia morphia = new Morphia();
        EntryDAO dao = new EntryDAO(morphia, mongo);
        /*for(int i=0;i<1000000;i++){
            Entry entry = new Entry();
            entry.setName("name"+i);
            dao.save(entry);
        }*/
        QueryResults<Entry> res=dao.find();
        Query<Entry> q = dao.createQuery();
        List<Entry> list=q.field("name").equal("name1").asList();
        for (Entry entry : list) {
            System.out.println(entry.getName());
        }
        //System.out.println(res.countAll());
        /*for (Entry e : res) {
            System.out.println(e.getId()+"---"+e.getName());
        }*/
    }
}

一次插入100000条数据大概5s,1000000大概是2m,当然这是一个简单的测试。没有参考标准。
从1000000查出来一个name1的数据,用时3 750ms。
[img][/img]
  • asm.jar (25.7 KB)
  • 下载次数: 141
  • 大小: 7.9 KB
分享到:
评论
2 楼 dingguijun 2014-11-01  
请问 加密 密码多少 解压不了?
1 楼 leej1985 2011-11-16  
你都加密了啊~密码可告知否?

相关推荐

    mongodb 操作基础类 封装

    Morphia一个nosql的ORM框架 对此二次封装

    spring-mongodb-morphia:springdata-mongo morphia mongodb 学习

    Morphia则是另一个与MongoDB集成的Java库,它通过对象关系映射(ORM)的方式,将Java对象映射到MongoDB的文档上。使用Morphia,开发者可以定义实体类,并使用`@Entity`注解指定对应的MongoDB集合。Morphia自动处理...

    GlacialMapper:受 Morphia 启发的 MongoDB 数据库映射器(希望将来是 MySQL)

    Morphia是Google开发的一个流行的MongoDB ORM框架,它提供了丰富的API和功能。GlacialMapper借鉴了Morphia的一些设计理念,如注解驱动的对象映射,但可能在某些方面进行了优化或创新,以满足特定需求或性能要求。 ...

    java数据库技术详解ppt

    JPA是Java EE规范,它定义了一个接口,允许开发者以面向对象的方式操作数据库,而Hibernate则是JPA的一个实现。通过ORM,开发者可以避免编写大量的SQL,提高代码的可读性和可维护性。 在PPT中,可能还涉及了事务...

    基于Morphia实现MongoDB按小时、按天聚合操作方法

    Morphia是一个针对MongoDB的Java ORM(对象关系映射)工具,它简化了与MongoDB的交互,允许开发者将Java对象直接映射到MongoDB文档。在本案例中,我们有两个关键的数据模型:`RawDevStatus`和`AggregationDevStatus`...

    MongoDB、Java与对象关系映射.pdf

    7. **MJORM**:Mongo-Java-ORM(MJORM)是一个专门为MongoDB设计的Java ORM解决方案,它避免了过度依赖注解,解决了多项目间的兼容性问题。MJORM提供了一种更灵活的方式来映射Java对象到MongoDB文档,使得Java开发者...

Global site tag (gtag.js) - Google Analytics