2010-08-12 71 views
23

爲什麼JPA中的實體類不是最終的或者有最終的方法?從here引用 -爲什麼JPA中的實體類不能成爲final?

實體類必須滿足以下要求:

...

類不能聲明final。沒有方法或持久化實例變量必須聲明爲final

是什麼原因? JPA是繼承實體類還是重新定義方法?

+0

相似的問題[支持最終字段的Java的持久性提供者](http://stackoverflow.com/questions/2455906/persistence-provider-for-java-that-supports-final-fields)。 – 2010-08-12 23:35:02

回答

27

根據定義,實體是一個可以持久化到數據庫的類,因此擁有最終字段在最終成爲數據庫記錄的內容中是沒有意義的。沒有最終類和最終方法的要求與JPA實現實際處理持久化實體類實例的方式有關。

實現在運行時爲您的類子類化和/或動態添加字節代碼到您的類中以檢測何時發生對實體對象的更改是常見的。如果你的班級被宣佈爲最終的,那麼這是不可能的。

當然,除此之外,還有更多的原因,下面是一個article,它提供了關於ORM一般如何工作的更多信息,這可能會幫助您更好地理解JPA實體的其他要求。

+0

謝謝!我知道最後的領域,但我不確定最終的方法/類。 – 2010-08-12 22:26:43

+0

不客氣;) – 2010-08-12 22:31:10

+4

請注意,*從數據庫加載*不可變類完全有道理。 – 2010-08-12 23:37:44

相關問題