我正在構造一個使用數據庫表中的數據的對象,方法是傳遞我想用來構造對象的數據行的主鍵。我應該使用構造函數中的數據庫中的數據填充成員變量
該對象的成員變量的數量應該在構造函數中發生,還是由構造函數或其他地方調用的另一個方法發生?如何在Rails ActiveRecord和其他ORM中完成這個工作,我懷疑有一組框架需要爲每個字段調用setter,但我並不是真的想要一個複雜的框架來完成這一切,所以最好的練習扮演我自己的簡單機制?
注意:請記住,我不想創建大量無法管理自己狀態的貧血數據模型。
我正在構造一個使用數據庫表中的數據的對象,方法是傳遞我想用來構造對象的數據行的主鍵。我應該使用構造函數中的數據庫中的數據填充成員變量
該對象的成員變量的數量應該在構造函數中發生,還是由構造函數或其他地方調用的另一個方法發生?如何在Rails ActiveRecord和其他ORM中完成這個工作,我懷疑有一組框架需要爲每個字段調用setter,但我並不是真的想要一個複雜的框架來完成這一切,所以最好的練習扮演我自己的簡單機制?
注意:請記住,我不想創建大量無法管理自己狀態的貧血數據模型。
我不把持續性管理放在貧血的類別中。它屬於單獨的持久層。我不會把它放在構造函數中。
我認爲貧血症的結果是當對象只關心狀態,並沒有嵌入商業智慧來操縱它。多想一想;不要擔心持久性。
許多語言和框架中遵循的安全規則是從不會在構造函數中執行危險的操作(讀取:可能會拋出異常的操作),因爲您通常沒有能力拋出這些異常或以其他方式正常回應它們。我的建議是在類之外執行數據庫操作,然後使用自定義構造函數來獲取對象中所需的字段。在該構造函數中,您將設置(通過簡單賦值)您的內部成員。
但是,你不需要某種類型的DAO服務對象與重邏輯執行域對象的腿部工作?你也需要讓你的班級中的所有這些設置者設置持久值,這可能會阻礙其他更真實的設置者方法 – zode64 2011-03-24 20:05:54
什麼是重邏輯? 「SELECT * FROM FOO」?邏輯在哪裏? ORM解決方案可以進行現場訪問,因此不需要安裝程序。 – duffymo 2011-03-24 21:35:04