1
類型安全查詢的新功能爲類生成元模型,但爲什麼這些字段不是最終的而是易失性的?在元模型類爲什麼JPA 2.0生成的元模型會使字段變成VOLATILE?
public static volatile SingularAttribute<Presentation, String> topic;
類型安全查詢的新功能爲類生成元模型,但爲什麼這些字段不是最終的而是易失性的?在元模型類爲什麼JPA 2.0生成的元模型會使字段變成VOLATILE?
public static volatile SingularAttribute<Presentation, String> topic;
字段不能最終,因爲靜態最終字段應該分配:
這是無法完成的,因爲應該分配的值對於創建元模型類的值是不知道的。當創建EntityManagerFactory時,值由提供者分配。
後果是屬性必須是易失性的,以保證其他線程可以看到提供者分配的值。
我不太瞭解volatile。但爲什麼這些領域需要特定的價值?爲什麼他們不能爲它分配一個隨機的SingularAttribute實現。例如new SingularAttributeImpl();在生成步驟。標準查詢需要知道類型(IS A SingularAttribute,CollectionAttribute等)和泛型參數。這是因爲提供者的內部工作原理嗎? –
現在,我更好地瞭解SingularAttribute的API,我可以看到稍後將由提供程序設置的一些其他數據。所以這個生成工具有點笨拙,它不處理annotations/xml來提供所需的所有信息。它委託供應商稍後做(基本上不是非常靜態的:P)。謝謝。 –