2009年4月16日星期四

SpringSide3 个人理解之DAO&Service篇

今天看了SpringSide3的例子,并且仔细看了源码。发现其实SpringSide3与我想的差异比较大,SpringSide3其实并不是一个code genaretor,而是一种架构风格,他是倡导的一种构建应用的风格。在充分利用已有框架和Java特性的基础之上快速建立应用的风格。废话不多说,列举一些例子,这些都是从demo中得到的感触。
拒绝无谓的过多的不必要的繁琐的没有意义的Interface。不否认有些时候需要接口,特别是提供API的时候,可是在JAVA语言中,接口更多的是概念级的东西。它固然有非常多的有点,可是在项目中无谓的无条件的遵循接口->实现的设计准则,有点本末倒置的感觉。其实很多时候用父类->子类的模式可能更加方便一点。补充一点:关于接口和继承的关系:“接口是调用方要求的结果,而继承则是实现方思考的产物。”
Sping中有HibernateTemplate。但是这个东西也是比较被人诟病的,主要是它用起来是很简单但是功能太简单,并不能完全取代DAO层。封装SpringSide扩展功能的Hibernat范型基类HibernateDao也比较简单,可是由于是基于原生HibernateAPI,所以利于扩展,实际上一般我们在项目中也是这么做的。而DefaultEntityManager类给人的感觉很像RoR中model的基类,基本实现了entity的管理同时子类又可以自由扩展。总的来说,在这块其实倒也都是常用的方式和技巧,只不过SS3提供了更加规范的实现方式。利于后来人的维护。总的来时封装DAO与Service层基本可以统一了。由于使用了JAVA的注释特性,真的达到了几乎0配置。否则Hibernate和Spring的配置文件,即便使用XDoclet,也需要很费劲的写很多配置及部署文件。

1 条评论:

  1. 接口是调用方要求的结果,而继承则是实现方思考的产物。

    回复删除