因为CMP不需要编写数据库访问的代码,所以CMP实现的实体Bean比BMP实现的实体Bean的代码少得多。例如本章中讨论的PlayerBean.java源文件要比第5章的代码文件SavingsAccountBean.java小得多。下表比较了两种不同类型实体Bean实现代码的不同:
表6-1两种持久性机制的编码比较
CMP和BMP实现实体Bean的代码比较不同点 CMP BMP企业Bean类定义 抽象 非抽象
数据库访问代码 由工具产生 开发者编码
持久性状态 虚拟持久字段表示 代码中的实例变量表示
持久性字段和关系字段的访问方法 必须 不是必须
findByPrimaryKey方法 由容器处理 开发者编码
其他查找方法 容器根据开发者定义的EJB QL查询自动处理 开发者编码
select方法 容器处理 不需要
ejbCreate方法的返回值 应该为null 必须是主键类
注意:对于两种持久性机制,商业方法和Home方法的实现规则都是一样的
表6-1两种持久性机制的编码比较
CMP和BMP实现实体Bean的代码比较不同点 CMP BMP企业Bean类定义 抽象 非抽象
数据库访问代码 由工具产生 开发者编码
持久性状态 虚拟持久字段表示 代码中的实例变量表示
持久性字段和关系字段的访问方法 必须 不是必须
findByPrimaryKey方法 由容器处理 开发者编码
其他查找方法 容器根据开发者定义的EJB QL查询自动处理 开发者编码
select方法 容器处理 不需要
ejbCreate方法的返回值 应该为null 必须是主键类
注意:对于两种持久性机制,商业方法和Home方法的实现规则都是一样的
解决方案 »
- jsp页面脚本不报错了
- 关于Struts中action中的name和attitude属性问题
- 求论文“基于JSP技术的学术会议论文系统”
- 验证码输出问题
- 新手求教J2EE开始的DUKE问题。
- 高分求助:liferay4中的用户和组的信息如何和ApacheDS中的目录作映射???
- 框架学习小站java99开站,散分庆贺!!为了保证每人拿到10分,刚才的帖子结掉了,再开一帖!
- 编译过后找不到EJB包了
- 用java实现 AES加密,解密算法中的输入输出问题
- Java 如何实现每日签到 每个自然周
- struts中,Action类如何返回另一个Action的execute方法的ActionForward结果?
- 怎样用预处理的方法查询不定数量的列?
表很大时,建议使用 BMP!CMP好慢啊!(JBOSS 当 远程访问 ORACLE时)(10000条记录吧)
访问本地 的 MYSQL就快的多了!
但是涉及到多表大记录集操作建议用BMP!
还有执行批操作时用BMP!
1.CMP能够快速开发
2.CMP可以比BMP有更高的性能(容器相关)
3.CMP比bmp更难调试
4.cpm可以对jdbc完全控制
5.bmp可以保持数据独立性
5.对应关联,CMP更加容易
>>CMP好慢啊!(JBOSS 当 远程访问 ORACLE时)(10000条记录吧)
>>访问本地 的 MYSQL就快的多了!
remote和homelocal的速度当然不在一个数量级上.一般实体BEAN都通过session bean本地访问.