日期:2014-05-16  浏览次数:20466 次

mongoDB的介绍和相关操作(7)

Morphia-Mongodborm

Morphia,一个轻量级的类型安全的 Java 类库,用来将在 MongoDB Java 对象之间进行映射.?类似hibernate。如果使用过hinernate再使用它会上手很快

POJO

@Entity(value = "test", noClassnameStored=true)
//
默认是要持久所有对象的

public?class?Meeting {
????@Id
????private?ObjectId id;

????//
标题
????// @Transient //
这个表示不持久
????private?String title;

????public?String getTitle() {
????????return?title;
????}

????public?void?setTitle(String title) {
????????this.title = title;
????}

??????public?ObjectId getId() {
????????return?id;
????}

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

@Entity实体类,namecollection的名称,noClassnameStored用来标识是否需要存储className字段来表示类名,为什么要使用他哪?保存类名的主要目的是,当你在同一个链接中保存不同的实体对象,但是你想

?作为他们的基类或超类来读取。

?如:

? ?@Entity("animals") abstract class Animal { String name; }?

@Entity("animals") Cat extends Animal { ... }?

@Entity("animals") Dog extends Animal { ... }?

//And then performing the following query...

List<Animal> animals = ds.createQuery(Animal.class).asList();?

?正如你看到的,如果不在文档中保存类名,Morphia将不能正确的识别创建那个类。

?如果你在一个链接中只保存唯一的实体类型并且你还关心你的数据库大小,在你的@Entity注解上加上noClassnameStored=true