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;
...
保存原始和基本类型的属性到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;
...
相关文章推荐
- C++学习笔记(六):复杂数据类型(string、容器和STL)
- Dev-C++下基本数据类型学习小结
- 【黑马程序员】 我的C语言学习笔记(1)数据类型
- python 入门学习笔记之基本语法与基本数据类型
- 计算机视觉与图像处理学习笔记(三)opencv的基本数据类型与简单图像处理函数
- PostgreSQL学习手册(常用数据类型)
- 【Android学习札记】数据类型
- python基础学习 数据类型——拾遗
- mysql学习笔记03 mysql数据类型
- MYSQL学习笔记之----数据类型
- JavaScript学习笔记2-五种原始数据类型和Object对象类型
- Android JNI和NDK学习(06)--JNI的数据类型
- 【黑马程序员】Java基础学习技术博客——基本数据类型
- Python学习笔记(一)—变量与数据类型
- 【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- java基础学习笔记——基本数据类型对象包装类
- Lua学习笔记二 数据类型及字符串操作
- MySQL学习笔记-数据类型与操作数据表