打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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]
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
NoSQL 之 Morphia 操作 MongoDB
Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)
数据实时同步之MongoDB
MongoDB整合Spring
Java对MongoDB文件的存取操作 - J2EE企业应用 顾问/咨询 Java传教士 -H.E.'s Blog
使用Scrapy构建一个网络爬虫
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服