《J2EE核心模式》第四章——J2EE重构(业务层和集成层的重构)

核心内容:session bean 和 entity bean的联系。

entity bean是数据实体对象(这里要注意数据实体对象和数据访问对象的区别和联系,参见“一般重构”),它反映的是数据库每一张表中的属性。
session bean是用户会话对象,它存储的是每个用户在访问系统的会话信息。

  1. 最佳实现:
    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应该是一个粗颗粒对象,至少应该存在一个抽象的夫类
  2. 不推荐实现:
    a、不推荐一个session bean保存一个entity bean。
    b、不推荐用户直接调用entity bean。
    c、entity bean 在设计时应避免分配很多的类,而这些却没有夫类。
原文地址:https://www.cnblogs.com/liulaolaiu/p/11744350.html