mongoDB http://www.mongodb.org/
Morphia https://github.com/mongodb/morphia
DZone http://architects.dzone.com/articles/using-morphia-map-java-objects
MongoDB with Querydsl http://blog.mysema.com/2010/11/mongodb-with-querydsl.html
Querydsl http://www.querydsl.com/
Morphia is a lightweight type-safe library for mapping Java objects to/from MongoDB. Morphia provides a typesafe, and fluent Query API support with (runtime) validation. Morphia uses annotations so there are no XML files to manage or update. Morphia should feel very comfortable for any developer with JPA experience.
- Lifecycle Method/Event Support
- Works great with Guice, Spring, and other DI frameworks.
- Many extension points (new annotations, converters, mapping behavior, logging, etc.)
- Does not store Null/Empty values (by default).
- GWT support (entities are just POJOs) -- (GWT ignores annotations)
- Advanced mapper which allows raw conversion,
void toObject(DBObject)
orDBObject fromObject(Object)
Please continue by reading the QuickStart or looking at a list of the annotations. If you have further questions, please reach out to us on our mailing list.
Quick start
Including morphia in your build
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>0.107</version>
</dependency>
See the dependencies page for more detail.
import com.mongodb.DBObject;
import org.bson.types.ObjectId;
import org.mongodb.morphia.Key;
import org.mongodb.morphia.annotations.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Entity("employees")
public class Employee {
@Id
private ObjectId id;
// value types are automatically persisted
private String firstName;
private String lastName;
// only non-null values are stored
private Long salary = null;
// by default fields are @Embedded
private Address address;
//references can be saved without automatic loading
private Key<Employee> manager;
//refs are stored**, and loaded automatically
@Reference
private List<Employee> underlings = new ArrayList<Employee>();
// stored in one binary field
// @Serialized EncryptedReviews;
//fields can be renamed
@Property("started")
private Date startDate;
@Property("left")
private Date endDate;
//fields can be indexed for better performance
@Indexed
private boolean active = false;
//fields can loaded, but not saved
@NotSaved
private String readButNotStored;
//fields can be ignored (no load/save)
@Transient
private int notStored;
//not @Transient, will be ignored by Serialization/GWT for example.
private transient boolean stored = true;
//Lifecycle methods -- Pre/PostLoad, Pre/PostPersist...
@PostLoad
void postLoad(DBObject dbObj) {
}
public Employee() {
}
public Employee(String firstName, String lastName, Key<Employee> manager, long salary) {
this.firstName = firstName;
this.lastName = lastName;
this.manager = manager;
this.salary = salary;
}
// getter and setter
......
}
public class Address {
private String country;
private String city;
private String address;
private String postcode;
// getter and setter
......
}
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.ServerAddress;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Key;
import org.mongodb.morphia.Morphia;
import org.mongodb.morphia.query.UpdateResults;
import java.net.UnknownHostException;
public class EmployeeRepository {
private Morphia morphia;
private Datastore ds;
public static void main(String[] args) {
EmployeeRepository repository = new EmployeeRepository();
repository.init();
repository.test();
}
public void init() {
try {
Mongo mongo = new MongoClient(new ServerAddress("localhost", 27017));
morphia = new Morphia();
ds = morphia.createDatastore(mongo, "testdb");
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
public void test() {
ds.save(new Employee("Mister", "GOD", null, 0L));
// get an employee without a manager
Employee boss = ds.find(Employee.class).field("manager").equal(null).get();
Key<Employee> scottsKey = ds.save(new Employee("Scott", "Hernandez", ds.getKey(boss), 150 * 1000));
//add Scott as an employee of his manager
UpdateResults<Employee> res = ds.update(boss, ds.createUpdateOperations(Employee.class).add("underlings", scottsKey));
// get Scott's boss; the same as the one above.
Employee scottsBoss = ds.find(Employee.class).filter("underlings", scottsKey).get();
for (Employee e : ds.find(Employee.class, "manager", boss))
System.out.println(e.getLastName() + " " + e.getFirstName());
}
}
Note: @Reference will not save objects, just a reference to them; You must save them yourself.
相关推荐
morphia.mapPackage("your.package.with.models"); // 替换为你的实体类所在的包 } public static Datastore getDatastore() { return morphia.createDatastore(mongoClient, "yourDatabaseName"); } } ``` ...
后续提交放在https://github.com/zdsiyan/watermelon 上, 用eclipse导入该工程需安装m2eclipse,jetty等查件. 另外.settings下的org.eclipse.wst.common.component文件如下: ...</project-modules>
Morphia是Google开发的一个用于Java的MongoDB对象映射库,它简化了与MongoDB的数据交互。本篇文章将深入探讨`spring-data-mongo`、Morphia以及它们在MongoDB中的应用。 首先,我们来看`spring-data-mongo`,这是...
Morphia 是一个 Java 框架,它为 MongoDB 提供了对象数据映射(Object Data Mapping,简称 ODM)功能,使得开发者可以更方便地在 Java 对象与 MongoDB 文档之间进行转换。本篇文章将详细介绍如何使用 Morphia 和 ...
Morphia是为MongoDB设计的一个强大的Object Document Mapper (ODM)库,它允许Java开发者以面向对象的方式与MongoDB进行交互,极大地简化了数据库操作。 在“morphia-mongodb-examples”项目中,我们看到的是一个...
### 使用 F# 探索 MongoDB #### 背景与目的 随着 NoSQL 数据库的兴起,MongoDB 成为了许多开发者的首选方案。对于 F# 开发者来说,结合 MongoDB 的灵活性与 F# 的强大功能可以实现高效快速的原型开发。本文旨在探讨...
【MongoDB与Morphia简介】 MongoDB是一款流行的NoSQL数据库系统,以其灵活的数据模型、高可用性和可扩展性而受到广泛欢迎。Morphia是针对MongoDB的一个Java持久层框架,它提供了简单易用的API,使得开发者能够方便地...
morphia基于mongodb的基本开发
中断更改:play-morphia 1.5.0将morphia库更新为org.mongodb.morphia 0.107。 请在您的应用程序中将文本从“ com.google.code.morphia”替换为“ org.mongodb.morphia” PlayMorphia概述 PlayMorphia模块一个功能...
Morphia是一个常见的选择,它是Google开发的一个用于MongoDB的数据映射框架,简化了在Java应用中操作MongoDB的过程。 在描述中提到"下载资源后,运行unit-tests即可",这暗示了项目可能已经包含了一套完整的测试...
Morphia 是一个 Java ORM(对象关系映射)库,用于简化 MongoDB 的数据操作,将数据模型与数据库文档之间的转换自动化。在本文中,我们将深入探讨如何使用 Morphia 进行 MongoDB 的操作。 首先,为了在 Java 项目中...
**标题:“Morphia和MongoDB学习总结<三>”** 在本文中,我们将深入探讨Morphia,一个用于Java的MongoDB对象数据映射(ODM)库,以及它如何与MongoDB数据库进行交互。Morphia简化了在MongoDB中存储和检索Java对象的...
本文将详细介绍如何在 Spring 4.2 中集成 MongoDB 框架,特别是使用 Morphia 1.1 这个 ORM(对象关系映射)工具进行数据操作。 ### 1. 安装与配置 首先,确保已安装 MongoDB 服务器并运行。然后,在项目中添加以下...
MongoDB是面向文档的开源数据库,Morphia是面向MongoDB 的类型安全的对象映射库。本文解释了在文档和对象之间进行映射的好处,并演示了如何使用Morphia来实现这个功能。然后演示了如何持久保存、加载、删除和查询...
在本文中,我们将探讨MongoDB的ORM框架Morphia,并结合Spring Data MongoDB的使用来创建一个集成应用。ORM(对象关系映射)框架是将数据库操作转化为对象模型的方法,简化了开发过程,使得开发者可以专注于业务逻辑...
【Morphia 操作 MongoDB 知识点详解】 Morphia 是一个针对 MongoDB 的 Java ORM(对象关系映射)框架,它允许开发者使用 Java 对象直接操作 MongoDB 数据库,简化了数据库操作。以下是对 Morphia 操作 MongoDB 的...
cdn, 在fly图像裁剪/调整,通过 MongoDb with的内容传递网络 #CDN 上的GridFs 这个实用工具可以作为独立的内容传递网络,使用MongoDB作为后端文件存储。 它可以从源代码生成,也可以作为已经编译的二进制文件安装。...
MongoDB是一种流行的开源NoSQL数据库系统,它以其高性能、高可用性和易扩展性而受到开发者的青睐。MongoDB使用了一种叫做BSON(类似于JSON)的格式来存储数据,它的数据模型与传统的关系型数据库有所不同,更贴近于...
Play 应用程序中的身份验证和授权 该项目是具有身份验证和授权功能的多模块播放应用程序的示例实现。 这附有一篇。 Play 被选为开发此应用程序的主要框架,因为它具有惊人的生态系统、插件和其他好处,例如 Akka、...
mongoMorphiaDemo mongoDB 上 morphia 演示的简单演示——这是“Java for MongoDB”课程的演示代码: : 该演示将展示如何使用开源项目将 java 对象插入/更新到 MongoDB: Morphia(Morphia 项目: : ) 项目模型:...