在sakai中使用ibatis之一
计划分四部分说明
第一部分说明sakai插件的代码结构
第二部分说明sakai对hibernate的支持
第三部分说明sakai组件的开发模式
第四部分在sakai加入对ibatis的支持
第零部分
调试,调试,调试。确保你的调试器可用!参考这篇文章设置调试器(http://liuyf.iteye.com/blog/632865)。补充说明一点,对于sakai这种面向接口的程序,静态代码走查的效率相当低下。调试器能帮你找到运行时的具体类,能大大提高代码阅读效率。
第一部分
定义:这里的sakai插件包含数据模型和表现,也就是sakai component和sakai tool.
Sakai component负责业务逻辑(Business Logic)和数据访问(Data Access),tool负责数据展现(Presentation)。Sakai非常非常强调接口编程,各个层之间的访问都是通过接口调用完成的,接口和具体类的映射通过spring完成。Data Access层的接口是xxxDao,其实现是xxxDaoImpl;Business Logic层的接口是xxxLogic,其实现是xxxLogicImpl;在这里的讨论范围内Presentation层是最外层,采用具体类。那么调用顺序有Presentation->xxxLogic->xxxDao。
我用Sakai App Builder(http://confluence.sakaiproject.org/display/BOOT/Sakai+App+Builder)生成了一个sakai的插件sakai-app-intro。下面结合该插件简要说明sakai的插件结构。
tool/src/java处理servlet请求,调用业务逻辑模块(ExternalLogic和SakaiappintroLogic),业务逻辑模块再调用dao,dao再调用hibernate。注意注意,tool不会调用dao,更不会调用hibernate;业务模块也不会直接调用hibernate。
为什么区分ExternalLogic和SakaiappintroLogic,我还没想很清楚,ExternalLogic可能强调该插件作为基础插件时的接口。
这里的DaoImpl实现了GeneralGenericDao接口,提供hibernate的增删改查功能。
下一部分具体描述sakai对hibernate的支持。