第一,EJB应该用于表示细粒度的实体对象,而client与server之间的交互原本就不应该通过entity bean,应该由service层组装粗粒度的DTO传递给client。同样的原因,entity bean之间也不会有更多的交流(除了对象模型固有的关联),都应该由service层来处理。第二,以你举的例子,在交易动作完成以后,entity bean记载的信息就应该进入数据库,entity bean本身则应该被销毁。第三,我一直觉得,CMP存在的价值就是(与session bean一道)提供分布式能力。如果没有分布的要求,基于POJO的ORM(譬如Hibernate和JDO)要好得多。
第三点你真是提醒了我,呵呵 还有就是我引用了IBM一个人写的J2EE Pitfalls and Best Pratics文章中的一段话:“Kyle Brown 谈到一个案例(1) :用户设定系统中的每一个对象是一个 entity bean超过 200 个entity EJB’s,在服务器启动的时候要花费好几个小时,他建议用户用session bean,返回简单的 Java 对象减少到 20 多个entity beans服务器启动时间不超过一分钟”,一直搞不懂他这段话的含义,这里数字应该指的是EJBs的种类吧。是不是能够使用POJO的地方尽量使用POJO,而不是CMP.
多谢!
第二点:对于CMP,钝化的时刻由容器决定,对于BMP,则要手写
由于有实例池的存在,如果一个用户实例了一个实体BEAN,当第二个用户也需要同一个实例时,容器会先在池内寻找看有没有该实例存在,如果有,则直接使用,若无,则会新实例化一个
QQ是16951832,希望能够和你们交流一下