2011-08-19 89 views
-2

我在這個網站上看到過有關動態POJO一代的帖子。我現在有類似的要求。如何動態創建Java POJO類?

我在數據庫中有一些表。我想爲每個包含字段和相應的getter和setter的表創建一個POJO類。這些類將被動態創建。一旦創建了這些類,我應該使用其他類中的setter和getter來獲取和設置數據並返回Java對象。

我見過BCEL,CGLIB和其他一些開源工具,但是找不到合適的例子。你可以幫我嗎?

+4

StackOverflow作爲一個社區,通過在網站上保留問題和答案來幫助每個人,這樣其他人就可以受益。請不要要求電子郵件通信。 –

+0

我添加了一個downvote,因爲整個概念是一個壞主意,我不能認爲還有什麼要做。不要使用codegen,不要使用bean,不要使用setter和getters(順便說一句,沒有業務邏輯的set_user和getter被稱爲bean模式,pojo這個詞只是真正需要區分一個bean這是一個簡單的舊Java對象,沒有任何要求。你應該使用的是你的特定情況下的hashmap,因爲bean將在代碼完成後創建(通過用戶輸入,你說)或類似的結構 –

回答

1

你看過任何ORM(對象關係映射)框架嗎?爲此目的而創建的?例如,Hibernate或Java EE 6標準JPA。這聽起來像是你開始重新發明一些既複雜又費時的事情 - 從來不是一個好主意。

UPDATE:響應評論

好吧,我只能說,你們正在建設自己變成傷害的世界。考慮:

  1. 如果你依賴完全動態的類,你會引用其他類的類和對象嗎?通過反思?你將如何跟蹤所有創建的類,他們的名字以及他們的setters和getters的名字?
  2. 當您必須重新啓動系統時會發生什麼?你將如何重新創建所有這些動態類?
  3. 使用完全動態的數據庫,您將如何能夠對其進行任何性能優化?像索引,例如。

我只能強烈建議你重新考慮你的架構。動態數據模型首先是一團糟,幾乎無法維護,優化和調試。我已經看到基於它的系統,它不漂亮。 IBM Lotus WCM是數據模型恐怖的典型例子。在99,99999999%的案例中,設計合理且規範化的關係模型會更好。

將此與動態,運行時ORM類相結合將完全不可能維護(並理解)。

+0

Yaa但是要使用hibernate和其他ORM工具,這些表必須先定義,但在我的情況下,表將由用戶動作動態生成,因此必須動態生成相應的類 – Srikanth

+0

請參閱答案中的更新以上 – pap

+1

@Pap是絕對正確的,我有一個很大的答案,我不會發送,因爲它不是一個答案,但基本上你想要使用的是一個hashmap。如果你是從用戶創建你的對象輸入,創建一個類而不是使用散列(類型安全)的唯一可能的優點是無效的,因爲無論如何您必須反射地訪問這些字段! –