《J2EE核心模式》第四章——J2EE重构(业务层和集成层的重构)
核心内容:session bean 和 entity bean的联系。
entity bean是数据实体对象(这里要注意数据实体对象和数据访问对象的区别和联系,参见“一般重构”),它反映的是数据库每一张表中的属性。
session bean是用户会话对象,它存储的是每个用户在访问系统的会话信息。
- 最佳实现:
a、用户不能直接使用entity bean,而需要由session bean间接调用。
b、作者在本书的P70页提到了复合entity bean的做法,但是作者又说:“从属对象并不是entity bean,而是被包含在entity bean内部的java对象”。这样的说法可以用以下的假设。EntityA、EntityB是两个数据实体对象,他们的属性为:
public class EntityA{
private String string1;
private String string2;
}
public class EntityB{
private String string3;
private String string4;
}
那么他们的复合数据实体对象应该是
public class EntityAANDEntityB{
private String string1;
private String string2;
private String string3;
private String string4;
}
而不是
public class EntityAANDEntityB{
private EntityA entityA;
private EntityB entityB;
}
我的想法是为什么要使用上一种复合而不使用下面的一种复合。在不考虑网络调用时(复合对象内部不存在异地通信)两者还有什么特别的区别?
c、session bean应按照功能存储一个或多个entity bean或复合的entity bean。
d、单个entity bean之间因该尽量减少通信,特别是通过网络调用的情况。
c、entity bean应该是一个粗颗粒对象,至少应该存在一个抽象的夫类 - 不推荐实现:
a、不推荐一个session bean保存一个entity bean。
b、不推荐用户直接调用entity bean。
c、entity bean 在设计时应避免分配很多的类,而这些却没有夫类。