您的位置:首页 > 其它

@transient 注解注解,什么意思?

2016-11-25 09:52 489 查看
该注解,是Hibernate、morphia等框架的注解。 

1)Hibernate中:

实体类中使用了@Table注解后,想要添加表中不存在字段,就要使用@Transient这个注解了。在网上找的方法是要将这个注解添加到自定义字段的get方法上,这样做了之后程序报错,最后试了将该注解添加到定义该字段的头部即可,例如:

即放在实体类的成员变量上部。

[java] view
plain copy

 





@Transient  

private String str;

2)morphia中:

根据我之前的文章知道,mongodb数据库是没有数据库字段的。但就不存在”想要添加表中不存在字段,就要使用@Transient这个注解了“的问题,那为什么还是用@Transient?

答:

因为使用morphia框架,一般情况下,保存原始和基本类型的属性到Mongo中,你不必为他们添加任何注解。但是如果你不想该实体类中的某个字段(如

//这个是常量。引入这个常量,是为了:1)直接调用即可,不用每次都输入“telNum”。2)便于代码的可读性,如果你在程序中输入“telNum”别人不明白是什么,你固定写到某个位置,大家一看就明白了 3)也可以防止别写程序时将“telNum”敲错,因为使用"对象名.成员变量名"输入“.”的时候会有可能代码提示,选择即可,这样是不可能出错的。

public final static String telNum= "telNum";

//类似于jf工程中,如下的用法

//public class ProjectContants {
//public static String CURRENT_USER = "CURRENT_USER";
//public static String CURRENT_ORGAN = "CURRENT_ORGAN";
//public static String CURRENT_PROJECT = "CURRENT_PROJECT";
//public static String RANDOM_IMAGE_CODE="RANDOM_IMAGE_CODE";
//}


)作为document存入mongodb数据库中,那么你就要加上@Transient。不然,当你执行mongodb的findAndModify等新增、修改操作时,你不想写入mongodb的某个字段,也写入mongodb数据库中了。


http://blog.csdn.net/z69183787/article/details/52942124


因为使用morphia框架,一般情况下,保存原始和基本类型的属性到Mongo中,你不必为他们添加任何注解:


[java] view
plain copy

 

 

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
plain copy

 

 

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

  

@Transient  

private int myTransientInt;  

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

[java] view
plain copy

 

 

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

  

@Property("my_integer")   

private int myInt;  //在MongoDB中为my_integer     

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