[英]Why do the JPA2 MetaModel get generated with volatile members?
我剛剛使用org.apache.openjpa.persistence.meta.AnnotationProcessor6
為我的JPA2實體生成MetaModel。
@javax.annotation.Generated
(value="org.apache.openjpa.persistence.meta.AnnotationProcessor6",
date="Tue Nov 22 09:49:03 CET 2011")
public class Entity_ {
public static volatile SingularAttribute<Entity,Entity> id;
public static volatile SingularAttribute<Entity,String> value;
public static volatile SingularAttribute<Entity,String> order;
}
有人可以解釋為什么在這種情況下將屬性標記為易失性嗎?
謝謝。
設置靜態變量的線程可能與用於訪問它們的線程不同,因此需要volatile
修飾符才能在所有線程之間同步內存。
沒有volatile
的場景是這樣的:
null
null
。 盡管有volatile
關鍵字的含義和Ingo的回答,但值得注意的是,每個JPA生成器都需要生成易失的元數據字段(JPA 2.0 FR, 6.2.1.1 Canonical Metamodel )。
在第199頁,您可以閱讀:
對於類X聲明的每個持久性非集合值屬性y(其中y的類型為Y),元模型類必須包含如下聲明:
public static volatile SingularAttribute<X, Y>
y;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.