@transient 註解註解,什麼意思?
該註解,是Hibernate、morphia等框架的註解。
1)Hibernate中:
實體類中使用了@Table註解後,想要新增表中不存在欄位,就要使用@Transient這個註解了。在網上找的方法是要將這個註解新增到自定義欄位的get方法上,這樣做了之後程式報錯,最後試了將該註解新增到定義該欄位的頭部即可,例如:
即放在實體類的成員變數上部。
- @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中,你不必為他們新增任何註解:
預設情況下,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註解:
|