正如我所理解的MVC,该模型的逻辑也应该进入模式本身 - 让每一个对象了一个独立的实体。 这意味着一个类的方法必须有触发和行动链。 例如,通过在Person类使用setZipCode(ZIP),在其中查找从拉链到城市台的邮政编码,然后可能会触发一个动作设置在同一setCity(市)。
这一切似乎都不错,一切,但是当你把一些JPA实现进入画面,会发生什么? 在我看来,这个类的getter和setter方法必须是干净的所有额外的逻辑,作为JPA实现使用这些建立的对象。 因此,你不能叫setCity内setZipCode。 我们已经走了围绕这是一个项目,我通过移动所有特定模型的逻辑控制器层的工作。 而不是直接在这种情况下,呼叫的人,我们称之为PersonController.setAddressInfo(ZIP),它可以同时处理,或这样的事情。 也许一个更好的选择是有做这个实体本身内部的瞬态功能。
使用ORM层时,我错过了在MVC或JPA的prinicples一些基本的东西,或不能MVC只是没有得到充分实施:因此,这里是我的问题吗? 它会更好,如果通用的getter和setter方法是私有的JPA和类将有一个单独的公共的,短暂的,API意味着开发商? (休眠似乎并不介意访问出于某种原因私有方法。)
我们在项目中使用Hibernate JPA实现的,我的同事已经使用的EclipseLink在另一个项目,我最近读一点关于OpenJPA的。