虽然我的 Java 应用程序很小而且做的事情很简单,但我很高兴使用纯 SQL,而且像 Glassfish 这样的应用程序服务器使连接管理变得非常容易。在了解了 JPA 和 EJB 之后,我决定重构我的项目,让它们使用这些很酷的东西,但遇到了一个更多关于设计而不是编程的问题:
将行为嵌入实体 Bean 是一种好习惯,还是它们应该只保存数据?
我已经阅读了许多手册和教程,但它们大多回答了我如何使用它们,而不是我应该如何使用它们来满足良好的设计要求。
例如,给定 2 个类:User
和Location
,它们都是实体 bean。Auser
可以存储 s 的集合,location
使用 JPA 实现起来也很方便。但是,如果我想用一些功能填充这些类,例如计算到另一个用户或位置的距离的方法,找到他们的路径交叉点,计算user
一天跑过的距离等等。如果我在 bean 本身中实现这样的功能,或者我应该使用具有大量静态方法的特殊装饰器和辅助类来实现我的目标,这会是一个“好的设计”吗?