扩展Spring系列(2) ---Spring对各种数据访问框架…
2008-02-23 09:20:39来源:互联网 阅读 ()
何为数据框架集成。
数据访问框架原本好好的,Spring都干了什么呢?
一是用template类封装了数据框架那些资源获取和异常事务处理的废话代码,而且按照自己的意见给出一些增强函数。
二是将其纳入了Spring的声明式事务管理中。
对比Spring对Hibernate、JDBC的集成,还有Spring Modules对O/R Broker的集成,发现Spring的DAO框架主要有六个类:
1.Template
著名的Template类,用callback机制封装了除业务代码外的所有必要但废话的代码,重新封装了数据框架的API,并再附送一些增强版。
2.TransactionManager
实现PlatformTransactionManager接口,数据访问框架就能与Spring的事务机制(TransactionTemplate或AOP声明式事务)结合。
重要的类仅以上两个,以下的类都只有少量标准代码,完全可以忽略。
3.DAOSupport
实际DAO类的基类,负责保持template变量。如果你觉得它破坏了你的类层次结构,完全可以不用。
4.Accessor
template类的基类,defining common properties like DataSource and exception translator,也没大用。
5.Operations
template所实现的接口,定义template支持的数据访问函数和增强函数,template有多个实现时才有用。
6.Exception Translate的相关类和函数
异常翻译,Spring DAO很重视的一个功能。
Template类的代码
因为Hibernate本身很复杂,所以HibernateTemplate也不适合畏高晕车的人士如我观看。JDBC简单很多,但JDBCTemplate又忙着增强JDBC的功能,多出好多代码。所以我选O/R broker的集成代码来看,代码一共才280行。
注:如果不熟O/R broker,可以简单的认为broker=connection, executable = statement ,其余一切同Jdbc。
1.1主干函数 Execute(BrokerCallback action)
step1. 获得Connection-- connecton = datasource.getConn();
step2. 准备Statement -- statement = new Statement(connection);
step3. 执行Action的回调函数doInBroker(Statement)。这个doInBroker()方法由客户定义,会拿着传入的statement,执行种种操作。
{
action.doInBroker(statement );
}
catch()
{
//翻译异常
}
1.2 template的API函数
虽然理论上大家可以直接使用execute(),在匿名内部类里调用数据访问框架的任何API。但Java的匿名内部类不比闭包,代码难看无比,所以除了Robbin还没见到其他兄弟提倡直接用execute方法的。
因此,template也对数据框架的API进行了wrap,封装了用execute(StatementCallback action)来执行这些API的函数,如下段就是wrap 了O/R Broker的execute(String statementID.....)方法:
return executeWithIntResult(new BrokerCallback() {
public Object doInBroker(Executable executable) throws BrokerException {
applyNamedParamsToExecutable(executable, paramNames, values);
return new Integer(executable.execute(statementID));
}
});
}
另外还提供一些增强型、便利型的API(如selectOne() ,selectMany()),在参数、返回值上极尽变化。
TransactionManager的代码
比较复杂,一下说不清。但JDBC的DatasourceTransactionManager和Hibernate的HibernateTransactionManager的代码都很相近,说明这个TransactionManager其实也比较固定埋头狂抄就是了。
有兴趣的同学,可以响应某大老号召,实现ofbiz与spring的集成:)
系列文章:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:需要注意自动装拆箱的一个特例
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash