关于DAO模式的the official documentation表示该模式中有四个主要参与者。
BusinessObject
DataAccessObject
DataSource
TransferObject
还有说:
BusinessObject表示数据客户端。它的目标是 需要访问数据源以获取和存储数据。一个 BusinessObject可以实现为会话bean,实体bean或 一些其他Java对象,除了servlet或helper bean之外 访问数据源。
我的问题是为什么我们不能将Entity bean用作Transfer Object
?我认为它完全适合这个定义。
基本上,实体bean可以用作BusinessObject
和TransferObject
,可以吗?
例如,一个实体:
@Entity
@Table(name="tbl")
public class User{
//Fields, Getters, Setters
}
怎么了?
答案 0 :(得分:2)
实体受限于JPA会话,并且在会话关闭时(例如,当它被发送到另一个服务器时)将无法正常工作 - 例如,访问延迟集合将引发异常
答案 1 :(得分:1)
是的,在现代技术堆栈中,这已经完成。您可以对业务对象和传输对象使用相同的POJO。但这种方法存在局限性。
由于这些原因,建议使用两组POJO。