您的位置:首页 > 其它

Morphia 学习四 数据类型与容器

2012-05-07 13:04 141 查看
注解原始和级别类型的属性

保存原始和基本类型的属性到Mongo中,你不必为他们添加任何注解:

[java] view
plaincopy

...

private int myInt;

private Date myDate;

private List<String> myStrings;

private String[] stringArray;

...

默认情况下,Morphia将会试着映射所有支持的基本和原始类型到Mongo,包括这些类型的数组。

MongoDB仅仅有一下数据类型:

Integer(32位有符号值)
Long(64有符号值)
Double(64位IEEE745浮点值)
String (字符串)

这里有些有价值的转换:

float → double
byte → int
short → int
char → String

并且,依赖于你的模型中存在的类型和数据库将会试着自动为你转换。我的意思是,因为在MongoDB数据库中只存在三种数字类型(32/64有符号, 64位FP)这将相当

容易转换。下面的列表为当前什么样的基本和原始类型可以被保存:

enum(在Mongo中作为String保存)
java.util.Date(在Mongo中保存为从新纪元UTC的毫秒数)
java.util.Locale(作为字符串保存)
com.mongodb.DBRef
com.mongodb.ObjectId

正如我我们上面的例子所示,Morphia还支持java.util.List, java.util.Set和java.util.Map容器, 和任何支持的原始类型的数组。

如果你想把一个属性排除映射到Mongo中, 你可以使用@Transient注解:

[java] view
plaincopy

import com.google.code.morphia.annotations.Transient;

...

@Transient private int myTransientInt;

...

默认情况下,Morphia把属性名作为Mongo中的字段名。这个可以通过@Property注解进行修改,指定一个名称。

[java] view
plaincopy

import com.google.code.morphia.annotations.Property;

...

@Property("my_integer")

private int myInt; //在MongoDB中为my_integer

...

User Collections(使用容器)

Morphia 支持容器(List, Set, Map) 和数组(Integer)

[java] view
plaincopy

...

private Set<String> tags;

private Map<String,Translation> translations;

@Reference

private List<Article> relatedArticles;

...

Morphia 将使用一下实现(默认)来创建容器:

java.util.ArrayList for List
java.util.HashSet for Set
java.util.hashMap for Map

如果你想使用其他的实现, 你可以在注解中重写他们

[java] view
plaincopy

...

@Property(concreteClass = java.util.TreeSet.class)

private Set<String> tags;

@Embedded(concreteClass = java.util.TreeMap.class)

private Map<String,Translation> translations;

@Reference(concreteClass = java.util.Vector.class)

private List<Article> relatedArticles;

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: