我目前在TYPO3 7/Extbase中實現了一個web應用程序,它具有一個複雜的對象結構,由一個根對象和一個子對象樹組成。持久對象與LazyObjectStorages
比方說,這就像一個更復雜的版本:
對象A < --1:N - >對象B < --1:N - >對象C
由於實例對象a是聚合根,我使用Object-A-Repository來保存樹。
這個效果很好,由於性能方面的原因,我把許多關係切換到了延遲加載,但是(使得它們的對象減少了)。這極大地加快了應用程序的運行速度,但並不是所有對Object-A-Repository的update()調用似乎都行得通。如果某個方法接收到C類型的對象並更改該對象並需要保留更改,則會出現該問題。 C具有到其父B的父鏈接,而B具有到A(懶惰對象存儲的對應部分)的父鏈接。
這個問題似乎與LazyObjectStorages沒有用實際的內容替換自己有關(因爲在這種情況下A對象沒有使用它的關係的「一側」)。如果在更新對象之前調用對象上的DebuggerUtility :: var_dump(),則持久性可以很好地工作。如果我不這樣做,數據庫不會改變。
有沒有辦法強制一個對象加載所有懶惰的存儲?或者我應該以另一種方式解決這個問題?
爲什麼你需要堅持一個懶惰的存儲?它應該是定義沒有改變,不應該需要任何(新)堅持。 – pgampe
比方說,我有一個控制器操作,它接收對象C的一個實例,對其進行更改,然後保留相應的A實例(因爲它是該對象的聚合根)。我有父母的鏈接到A,但A到B和B到C存儲似乎仍然很懶。 – mrwienh
如果你做了'$ A-> getB-> setC($ C);'''''''''''''''''''''''''''' – pgampe