当前位置:首页 > 全部子站 > IT > 思科认证

J2EE设计模式之用实体组件进行数据存取

来源:长理培训发布时间:2017-12-21 14:26:22

 百度广告

  1,实体组件只是EJB层中的实现选择之一。实体组件不应该被暴露给客户软件。WEB层和其他EJB客户软件绝不应该直接访问实体组件。它亿只应该与由实现应用业务逻辑的会话组件所构成的一个会话组件层打交道。这不仅保持了应用设计与实现中的灵活性,而且常常还改进了性能。

  2,会话组件最好只通过普通JAVA数据存取接口的一个持久性门面来访问实体组件。虽然实体组件衽了一种特殊的数据处理方法,但标准JAVA接口却没有。这种方法不公保持了灵活性,而且还预见性地检验了一个应用。笔者对实体组件的未来产生了极大的怀疑,因为凡是在实体组件适用的任何地方,JDO都能提供一个更简单、更通用、性能更高的解决方案。通过使用DAO,我们仍有换用JDO或其他任一持久性策略的能力,即便在一开始就使用实体组件实现了一个应用之后。

  3,实体组件通常是一 个薄层,用于具体化一个不是基于对象的数据存储器。如果使用一个像ODBMS之类的面对对象的数据存储器,这个薄层不是必需的,因为可以使用助手类从会话组件中访问这种数据存储器

  4,关于实体组件的争论有两点:一)实体组件的粒度,二)实体组件是否可以实现业务逻辑。

  5,一个粗实体可能会建模一条逻辑记录,而这条记录会分布于多个表中;而一个精细粒度可能会映射到单个表中;在EJB2.0 CMP中通常认为精细粒度会更加方便,虽然粗粒度的建模更利于面向对象的设计,但有一个结论就是:

  6,无论任何理由都不能破坏以下约定:

  7,BMP的"N+1"问题,对于BMP的find方法,它在EJB中的实现需要返回主键集合,在幕后BMP做了什么了?
SELECT PK,NAME, FROM USERS WHERE PK=
SELECT PK,NAME, FROM USERS WHERE PK=
SELECT PK,NAME, FROM USERS WHERE PK IN

  结论:不要实体组件中使用BMP,而要从无状态会话组件中使用持久性。和从一个DAO层中执行数据存取相比,使用BMP不会增加什么价值,只会增加复杂性。

  8,CMP2.0引进了主业务方法(我平时叫home方法),每个实体有自己的业务方法(远程接口中定义的方法);两者均可以通过调用ejbSelect()方法来获取想要进行的逻辑操作,当然也可以作任何其它操作,如调用存储过程等。

  9,应该使用DAO来分离数据数据存取与业务逻辑。当然DAO中是可以用无状态会话BEAN来实现的。

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部