java - 持久性逻辑应该放置在域模型 bean 中还是仅放置在 DAO 中?

标签 java persistence dao

有人可以解释一下这样做的优点和缺点吗?我的意思是,不使用 ORM 框架/JPA 规范。

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

teacher - student (many-to-many)

doctor - patient (one-to-many)

我的问题是,我们是否可以将 getPatients() 方法放在 Doctor bean 中,或者将 getStudents() 方法放在 Teacher bean 中,或者是否应该将其放在 POJO 中,并且所有这些东西都应该放在 DAO 层中。

我经常看到第一种方法用于以下情况:对象模型 bean 扩展类,为它们提供对服务/持久化 Facades 的访问权限,或者由 spring 注入(inject)它们等。它的优点是,可以调用医生.getPatents();实际上在应用程序中的任何地方都可以使用,而不是从 DAO 获取结果。

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

最佳答案

你可以做任何你想做的事情,但普遍存在的模式是 DAO 模式。 重点是 separate your concerns .如果您有一个域对象,那么很可能其中有一些业务逻辑。您真的想将持久性逻辑放在业务逻辑之上吗?您的应用程序将变得更难维护,更难(容易)测试,并且有更多错误。一旦你做出了一项有问题的设计决定,更多的决定就会随之而来......

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

相关文章:

java - jdbc 仅对多个用户使用与 oracle 的一个 session

java - 将 DAO Autowiring 到服务中

c - 保持 C 中的更改

java - 线程中的异常 "main"java.lang.ClassFormatError : Absent Code attribute

grails - Grails的failOnError是否会强制刷新?

java - 如何在单个事务中调用2个重载方法?

java - 单个 DAO 和通用 CRUD 方法(JPA/Hibernate + Spring)

java - 我可以使用 groovy 的默认 getter/setter 来帮助实现 java 接口(interface)吗?

java - Java/lwjgl 中的 OpenGL 光照问题

java - Android - Java - Buttonclicker nullpointerException