【问题二】
Struts框架由于出现时间早,因此使用相对广泛,很容易找到很多现成的开源功能标签以供使用,以及样例程序可供参考。但是它的组件在页面中显示的粗粒度,以及框架类的限制在很多情况下会表现得过于死板,给表示层的开发会带来一些额外的代码开销。
Spring是业务组件层轻量级框架。Spring框架是一个基于IoC(依赖注入)和AOP(面向方面编程)的构架。用户可以通过Spring来利用普通Java对象(POJO)编程,使用依赖注入解析POJO间的依赖性,然后使用面向方面编程(AOP)将服务与它们相关联。采用依赖注入使得它可以很容易地实现Bean的装配,提供了简洁的AOP并据此实现事务管理等,但是它不具备处理应用分布式的能力。Spring的核心要点是支持不绑定到特定J2EE服务的可重用业务和数据访问对象。这样的对象可以在不同的J2EE环境(Web或EJB)、独立应用程序和测试环境之间重用。
Spring框架处于应用服务器和服务库的上方,服务整合的代码属于框架,并暴露于应用开发者。它与应用服务器整合的能力相对EJB 3.0要弱。但是Spting框架模块的可分离配置体现了它优于EJB 3.0的灵活性。
Hiberhate是一个开源的O/R Mapping框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在应用EJB的J2EE框架中取代CMP,完成数据持久化的重任。相对而言,Hibernate基本优势表现在:使用Java反射机制而不是字节码增强程序来实现透明性;使用简单;映射的灵活性很出色,它支持各种关系数据库,从一对一(1:1)到多对多(m:n)的各种复杂关系。其缺点是限制所使用的对象模型(例如,一个持久性类不能映射到多个表)。
iBATIS是一个简易的SQL Map工具,它是将手工编写的在XML。配置文件中的SQL语句映射成Java对象。使用iBATIS提供的O/R Mapping机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate实现O/R.Mapping而言基本一致,而对于具体的数据操作,HiberTlate会自动生成SOL语句,而iBATIS则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”O/R Mapping机制而言,iBATIS以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,iBATIS的出现显得别具意义。