【引自LifeNote的博客】要实现对数据库的操作,离不开数据源(DataSource)或者连接(Connection),但是通常来说对数据库的操作都应该放在DAO中,而DAO又不应该与应用服务器相关联,所以一般都使用连接(Connection)。现在我们这里就有一个问题了,怎么在拦截器中获得连接。我想可以通过两种方式获得:
在分别讨论这两种方法之前,我们需要先讨论一下在处理数据库的时候的异常的处理。我这里做了一个TransactionException继承至RuntimeException然后在拦截器里面抛出,再又应用框架处理这个异常。下面试这个类的代码:
|
1)通过方法的第一个参数传进去
|
需要注意的是:getNeedTransaction就是需要进行事务处理的方法的开头,这个方法可以写成一个从配置文件里面去读,这里我就写死在里面了。只是对insert和update开头的方法进行事务控制。
2) 将Connection对象放在ThreadLocal中
|
最后将这个拦截器添加到AOP拦截框架中去,InterceptorHandler类中的getIntercetors方法中添加一个:
private synchronized List getIntercetors(){
if(null == interceptors){
interceptors = new ArrayList();
……………………………………
interceptors.add(new TransactionInterceptor ());
……………………………………
}
return interceptors;
}
相关专题
- 开源!数据库的新道路 (23次浏览)
- 主流开源数据库的技术特点点评 (19次浏览)
- 影响数据中心十大颠覆性技术 (13次浏览)
- LINQ下使用三层架构的探索(三)插入数据 (10次浏览)
- 开源数据库:兼容是关键 (10次浏览)
- PostgreSQL 8.0上手 (10次浏览)
- 走入开源数据库 (8次浏览)
- 微软将引领数据库市场飞向“云”端? (5次浏览)
- 测试SimpleSQL数据库 (4次浏览)
- 带你深入了解数据库开发者常犯的十大错误 (0次浏览)



