我有一個引用java.lang.reflect.Method
的類,我需要存儲該類和該引用。如何通過Hibernate將java.lang.reflect.Method存儲到數據庫中
有人知道該怎麼做嗎?
在我看來,我不能直截了當地做,但我想我可以將java.lang.reflect.Method
分解成類名,方法名,類名參數,並存儲這些字符串。這樣,我可以在加載時從它們重新生成Method
對象。
它有道理嗎?在這種情況下,有關如何做到這一點的想法?
我有一個引用java.lang.reflect.Method
的類,我需要存儲該類和該引用。如何通過Hibernate將java.lang.reflect.Method存儲到數據庫中
有人知道該怎麼做嗎?
在我看來,我不能直截了當地做,但我想我可以將java.lang.reflect.Method
分解成類名,方法名,類名參數,並存儲這些字符串。這樣,我可以在加載時從它們重新生成Method
對象。
它有道理嗎?在這種情況下,有關如何做到這一點的想法?
您無法將Method
實例保存在數據庫中。它不可序列化。
您可以做的最好的做法是創建一對代表方法名稱和簽名的字符串以及定義它的類的完全限定名稱。如果將它們存儲在數據庫中,則可以使用反射...重建Method
(和Class
),前提是該類在類路徑中可用。
有關如何做到這一點的任何想法?
它應該是相當直接的使用Class
和Method
API。我建議你閱讀各自的javadoc,並嘗試自己編碼。如果您遇到問題,請提出後續問題,包括提供問題的代碼。
而且你知道如何/在哪裏我應該指定一個去組成和重建戰略?我希望Hibernate爲我做這件事,以免污染我的商業模型層。
在您的Java代碼中。這不是Hibernate/JPA會自動爲你做的事情。 (一開始,關於類存在於classpath中警告實際上意味着反向轉換不能保證工作...)
其實,你的堅持Method
對象「規定」(在某些表單或其他)是一個標誌,表明你的應用程序設計已經得到方式太複雜了... IMO。
謝謝Stephen!而已。你知道我應該怎樣/在哪裏指定分解和重構策略?我希望Hibernate爲我做這件事,以免污染我的商業模型層。 –
我很抱歉我最後的評論。我沒有看完整的答案。再次感謝! –
是的,我完全同意:這其實意味着一個糟糕的設計,但這是一個旨在由最終用戶動態配置的測試應用程序。這就是爲什麼它是反射密集型的。我從來不會在基礎應用程序中做這種事情。 –
你有正確的想法,只是執行。 –