JDO、EJB CMP、Hibernate和Amber比较

开发 后端
本文介绍JDO、EJB CMP、Hibernate和Amber比较,分别介绍了他们的优点和缺点。

JDO、EJB CMP、Hibernate和Amber比较

JDO的优点:
◆JDO的生命周期状态机(lifecycle state machine)是正确的用法。任何其它的O/R映射工具都应该使用JDO的生命周期或者它的子集(例如:如果不支持事务)。记住,JDO生命周期是为 JDO实现服务的。大部分用户不需要了解其中很复杂的内幕。网页Amber生命周期中有些图示。
◆PersistentManager API对如何管理JDO对象的状态有一定的优势和价值。

JDO的缺点:
◆查询(query)支持不完全。它应该使用类似Hibernate的HSQL查询语言,并使用java.sql.ResultSet作为查询结果。
◆用于重载方法的字段扩展让人觉得比较混乱。最好使用类似Hibernate或者EJB/CMP的方法,并重载它们。

Hibernate的优点:
◆有着正确的数据模型。以POJO为基础的模型是个正确的方向。
◆可配置性(例如对象之间的关系)是个很好的基础。
◆HSQL正是O/R映射语言应该有的。
◆有着完整的API
◆采用简明的Session类作为控制流的清洗器,因为它沿用了Connection的模型

Hibernate的缺点:
◆没有使用JDO生命周期,这是不正确的做法。
◆API(例如查询)还是有点混乱。It's better than the alternative, but using java.sql.ResultSet as the foundation would clean it up.
◆API如果作为一个规范的话,还是不够干净。例如,在使用查询参数(query parameters)时,存在一些应用漏洞。
◆我不认为使用类名作为表的标识是件好事。

EJB CMP的优点:
◆采用工厂类(指Home)查找实例比向Session/Connection对象传递参数获取实例要好。
◆ejbSelect跟上面说的类似。
◆查询名称使用abstract schma是一个很好的解决方案。
◆理论上来说,这种模式在某些方案中可以有更好的复用性。

EJB CMP的优点:
◆CMP不属于EJB规范。它并不是个合适的模型去实现这个目的。已经没有合适的(例如非官方)借口去让EJB3.0中保留CMP。

Amber优点:
◆使用JDBC ResultSet和PreparedStatement做查询

出于某些原因,O/R映射工具通常抛弃强大的ResultSet和PreparedStatement API,而创建自己一套并不是很合适的替代品。O/R查询器应该使用一个外部的SQL(例如HSQL)作为查询语言,并使用ResultSet作为结果集,使用PreparedStatement处理查询参数。可以增加其它的API作为查询子集,就像查询一个单独的实体,但应该使用ResultSet和 PreparedStatement作为基础。

Amber缺点:
◆Amber的研究价值远大于它的使用价值

【编辑推荐】

  1. EJB技术的历史
  2. JavaBean与EJB的不同
  3. 基于EJB技术的商务预订系统的开发
  4. EJB的分类及其各自的功能和应用
  5. J2EE中EJB的专用术语解释
责任编辑:佚名 来源: IT专家网
相关推荐

2009-06-26 14:37:10

EJB和Spring

2009-09-24 12:05:35

2009-06-11 15:26:05

EJB组件EJB容器

2009-06-12 09:30:56

EJB3.0Spring+Hibe

2009-06-22 16:19:45

JavaBeansEJBPOJO

2009-06-12 12:46:59

EJB3.0

2009-06-11 16:01:17

EJB容器

2009-06-26 14:29:03

2009-06-11 16:53:09

什么是EJBEJB

2009-06-12 09:41:07

EJB3.0Spring

2009-06-22 16:59:33

POJOSpringEJB 3.0

2011-04-19 09:14:59

Ibatis

2009-06-18 13:29:05

Hibernate下载Hibernate安装

2009-10-29 09:52:55

OSGi

2009-09-22 15:26:30

Hibernate多表

2009-06-12 10:16:27

EJB分类

2009-06-11 16:25:44

EJB2.0EJB

2009-09-22 11:27:41

模型对象Hibernate

2009-06-04 17:33:08

EJB 3.1EJB 3.0

2009-06-12 11:06:35

EJB技术
点赞
收藏

51CTO技术栈公众号