首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

一个dao模型,带事务和错误处理,请指正

2012-08-29 
一个dao模型,带事务和异常处理,请指正!简介:一个纯jdbc的dao模型,参考网上多篇相关技术文章,重点包括:1.事

一个dao模型,带事务和异常处理,请指正!

简介:
一个纯jdbc的dao模型,参考网上多篇相关技术文章,重点包括:
1.事务处理;
2.模板设计;
3.异常处理;
其中事务和异常方面一直也是争议比较大的地方,希望大家多指正,提出宝贵的意见。

首先是dao的结构描述:

首先是一些基础类,包括:

dbutil: 数据库操作基础类(获取数据库连接、获取事务管理器等)

transactionTemplate: 事务处理模板类

transactionManager: 事务管理器

transactionCallback: 事务处理回调方法(返回结果)

transactionCallbackWithoutResult: 事务处理回调方法(不返回结果)

详细类容请参考源码:


一个dao模型,带事务和错误处理,请指正

?

DBUtil:

?

?

?

Dao接口:

?

?

注意:以上仅为部分实现!

?

---------------------

?

到这里,我们就要关心事务处理方面的问题了。

我将事务处理放到了service层,采用的是回调的方式。

参考:http://blog.csdn.net/qjyong/article/details/5513638

?

TaskService:

?

package com.bts.service;import java.util.List;import com.bts.bean.Task;import com.bts.dao.TaskDao;import com.bts.dao.impl.TaskDaoImpl;import com.bts.db.TransactionCallback;import com.bts.db.TransactionCallbackWithoutResult;import com.bts.db.TransactionTemplate;import com.bts.exception.dao.DaoException;/** * @author huangfox *  */public class TaskService {public TaskDao dao = null;public TaskService() {super();this.dao = new TaskDaoImpl();}/** * 通过applicationNumber获取Task。 *  * @param args * @return * @throws DaoException */public Task getTaskByApplicationNumber(final Task args) {return TransactionTemplate.execute(new TransactionCallback<Task>() {@Overridepublic Task doInTransaction() throws DaoException {return dao.select(args);}});}/** * 获取所有符合条件的Task。 *  * @param args * @return * @throws DaoException */public List<Task> getTasks(final Task args) {return TransactionTemplate.execute(new TransactionCallback<List<Task>>() {@Overridepublic List<Task> doInTransaction() throws DaoException {return dao.query(args);}});}/** * 获取所有符合条件的Task的总量。 *  * @param args * @return * @throws DaoException */public int getTasksCount(final Task args) {return TransactionTemplate.execute(new TransactionCallback<Integer>() {@Overridepublic Integer doInTransaction() throws DaoException {return dao.getCount(args);}});}/** * 添加一个任务。 *  * @param one * @throws DaoException */public void addTask(final Task one) {TransactionTemplate.execute(new TransactionCallbackWithoutResult() {@Overridepublic void doInTransaction() throws DaoException {dao.insert(one);}});}/** * 添加多个任务。 *  * @param tasks */public void addTaskMutil(final List<Task> tasks) {TransactionTemplate.execute(new TransactionCallbackWithoutResult() {@Overridepublic void doInTransaction() throws DaoException {dao.insert(tasks);}});}/** * 根据申请号(ApplicationNumber)修改一个task。 *  * @param one * @throws DaoException */public void modifyTask(final Task one) {TransactionTemplate.execute(new TransactionCallbackWithoutResult() {@Overridepublic void doInTransaction() throws DaoException {dao.update(one);}});}/** * 根据申请号(ApplicationNumber)删除一个Task。 *  * @param one * @throws DaoException */public void deleteTaskByAppNum(final Task one) {TransactionTemplate.execute(new TransactionCallbackWithoutResult() {@Overridepublic void doInTransaction() throws DaoException {dao.delete(one);}});}}
?

?

?

---------------------------------

如果哪位超级有耐心的看到了着,请你参与讨论这个dao模型中的不足,或者说说你项目中dao是怎么运用的!

重点可以关注:

事务处理

异常处理

设计模式

其他 ? :P ?

?

?

?

?

?

?

?

?

1 楼 wklucky 2012-05-19   你好,能提供以下完整的源码吗?谢谢
wklucky@qq.com

热点排行