簡體   English   中英

為什么JPA中的實體類不能是最終的?

[英]Why can't entity class in JPA be final?

為什么JPA中的實體類不能是最終的或者有最終方法? 引用這里 -

實體類必須遵循以下要求:

...

不得將該類聲明為final 沒有方法或持久化實例變量必須聲明為final

是什么原因? JPA是否對實體類進行了子類化並重新定義了方法?

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

實現在運行時子類化子類和/或動態地向類中添加字節代碼是常見的,以便檢測何時發生對實體對象的更改。 如果你的類被宣布為final,那就不可能了。

當然有更多的原因而不僅僅是那些,這里有一篇文章提供了有關ORM一般在幕后工作的更多信息,這可能有助於您更好地理解JPA實體的其他要求。

因為持久性提供程序可以創建對象的代理。 這些代理正在創建實體/類的運行時子類,也可能添加一些標志來標識數據是否有變化。 所以這就是為什么你的班級不應該是最終有能力改變它的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM