能否请任何人解释一下这是什么利弊?我的意思是,不使用ORM框架/ JPA规范。

它涉及实体之间的多对多和多对一关系。想象实体关系


  老师-学生(多对多)


要么


  医生-患者(一对多)


我的问题是,是否可以在Doctor bean上放置getPatients()方法,在Teacher bean上放置getStudents(),还是应该将POJO放置在DAO层中。

我经常看到第一种方法,在对象模型Bean扩展为它们提供访问服务/持久性Facade的类,或者由Spring随其注入等的情况下使用。其优点是,可以调用doctor.getPatients ();实际上在应用程序中的任何地方,而不是从DAO中获取结果。

在某些情况下第一种方法很方便吗?因为我看到很多情况下都是这样做的,所以我想知道它是否有目的,或者是业余爱好还是旧风格。

最佳答案

遵循KISS原则。 DAO非常适合从域逻辑中抽象出持久性机制。域对象只是简单地将状态从一层传递到另一层,通常在其中只有很少的业务逻辑。这意味着域对象(也称为DTO)可以具有许多JPA批注以指示某种ORM框架的持久性,还可以具有JAXB批注以允许将DTO轻松地编组为XML以通过Web服务进行传输。

我的总体趋势是拥有一个专用于在单个DTO上进行操作的业务对象,以通过业务规则驱动以某种方式更改其状态。服务(这是JTA事务边界)管理业务对象的集合,并实质上形成应用程序事务。这遵循了许多具有非常明确目的的细颗粒物体的一般OOD原理。

关于java - 应该将持久性逻辑放在域模型Bean中还是仅放在DAO中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4101879/

10-13 09:11