正如我所理解的MVC,模型的邏輯也應該進入模型本身 - 使每個對象成爲一個獨立的實體。這意味着類的方法必須具有觸發器和動作鏈。例如,通過在Person類中使用setZipCode(zip),可以觸發一個操作,在該操作中,它將郵政編碼從zip到城市表中查找,然後將setCity(city)設置爲相同。使用JPA時實現MVC
這一切似乎都很好,但是當你將一些JPA實現插入圖片時會發生什麼?正如我所看到的,類的setter和getter必須清除所有額外的邏輯,因爲JPA實現使用這些來構建對象。因此你不能在setZipCode中調用setCity。我們已經解決了這個問題,通過將所有特定於模型的邏輯移動到控制器層來處理這個項目。在這種情況下,不是直接調用Person,而是調用PersonController.setAddressInfo(zip)來處理兩者,或者類似的東西。也許更好的選擇是在實體本身內部具有瞬態函數。
所以,這裏是我的問題:我有沒有在MVC或JPA的原理中遺漏一些基本知識,或者不能在使用ORM層時完全實現MVC?如果泛型setter和getter對於JPA是私有的並且這些類將爲開發人員提供單獨的公共,臨時API,那麼它會更好嗎? (由於某種原因,Hibernate似乎並不介意訪問私有方法。)
在項目中使用Hibernate的JPA實現中,我的同事在另一個項目中使用了EclipseLink,並且我一直在閱讀關於OpenJPA的一些信息最近。