定义实体
1、@Entity
如果你想通过Morphia把你的对象保存到Mongo中,你首先要做的是使用@Entity注解你的类:
import com.google.code.morphia.annotations.Entity;
@Entity
public class Hotel {
...
}
A、名称和构造方法
你可以为你的MongoDB DBConllection设置名称。必须有一个无参的默认构造方法。
@Entity("hotels")
public class Hotel {
...
public Hotel() {
}
...
}
注意:你的默认构造方法不一定是public,也可以是protected或private。
B、在文档中的类名和怎样废弃使用类名
在@Entity注解中提供了一个可选的参数用来标识是否在文档中保存类名。
@Entity(value="hotels", noClassnameStored=true)
public class Hotel {
...
public Hotel() {
}
...
}
默认会在文档中保存类名。
为什么要使用他哪?保存类名的主要目的是,当你在同一个链接中保存不同的实体对象,但是你想
作为他们的基类或超类来读取。
如:
@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
参数将会是安全的。
英语水平有限,敬请大师斧正