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持久化,就不必亲自为应用程序中的业务对象做出任何特殊的设计决定。
实体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持久化,就不必亲自为应用程序中的业务对象做出任何特殊的设计决定。
相关文章推荐
- Android适配
- mysql插入中文 解决方案
- Android Studio的调试技巧 (未完待续)
- 访问不了Google
- UVA 10780-Again Prime? No Time.
- Python学习-1天--基础操作
- Android Activity启动机制流程和四种启动模式
- JQuery.cookie.js操作客户端cookie
- Java运算符
- 计算机网络重点知识总结
- 无法连接主机“192.168.30.7”: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
- 我的C++回调函数的理解
- Java基本数据类型
- MyBatis日期有坑
- Android,环境搭建
- Android 关于OOM的解决方案
- CF-One Bomb(炸弹问题)
- 在宇宙间不易被风吹散 —— 月亮
- Mybatis核心类生命周期和管理
- 绘画