您的位置:首页 > 其它

EJB

2016-07-19 23:26 267 查看
设计实体bean的目的就是表示、存储和获取数据库中的数据。
实体bean允许在EJB服务器中进行两种类型的持久化:BMP(Bean-Managed Persistence,bean管理持久化)和CMP(Container-Managed Persistence,容器管理持久化)。在BMP中,bean本身负责执行与存储和获取数据相关的所有SQL——换句话说,它要求bean的作者创建适当的JDBC逻辑;而CMP要求容器负责存储和获取bean的数据。
CMP不能解决持久化问题的原因:
1.CMP实体bean需要对数据库表的一对一映射;
2.它们不直接继承关系;
3.它们的速度慢;
4.必须有人来决定哪个bean字段映射到哪个表列;
5.它们需要特殊的方法名。如果没有正确的遵守这些命名约定,他们就会失败;
6.实体bean必须驻留在J2EE应用服务器环境中——它们是一种重型的解决方案;
7.无法轻松地把它们抽象成“通用”组件,供其他应用程序使用;
8.它们是不可序列化的;
9.它们很少作为可移植组件出现,很难在其他应用中重用——一般来说,必须开发自己的EJB解决方案。

Hibernate可以解决上述的许多问题,或者缓解某些问题:
1.Hibernate不要求开发人员将POJO一一映射到表。可以由多个表列构造出一个POJO,也可以将几个POJO持久化到同一个表中;
2.Hibernate直接支持类之间的继承关系和各种其他关系;
3.在Hibernate中,可以在部署时指定映射,但这不是必须的;Hibernate方式致力于减少在新环境中部署应用程序的代价;
4.Hibernate持久化不要求使用J2EE应用服务器或任何其他特殊环境;因此,对于独立应用程序、客户端应用程序存储以及不能直接使用J2EE服务器的其他环境,它是更合适的解决方案;
5.Hibernate使用的POJO可以非常轻松自然地实现泛化,从而在其他应用程序中使用。对于Hibernate库没有直接的依赖性,所以POJO可以放进不需要持久化的环境中,也可以使用任何其他的“对POJO友好的”机制对它们进行持久化;
6.在处理可序列化POJO方面,Hibernate没有任何问题;
7.有许许多多现有的代码;任何能够持久化数据库中的Java对象都适合进行Hibernate持久化。因此,Hibernate成为专用解决方案的替代品,也可以作为还没有集成数据库持久化功能的应用程序的持久化引擎。因此,通过选用Hibernate持久化,就不必亲自为应用程序中的业务对象做出任何特殊的设计决定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: