dbutils框架

一:O-R Mapping,对象关系映射,即将一个对象存到一个关系数据库中,常用的O-R Mapping工具有

1,Hibernate

2,Commons DbUtils(只是对JDBC的简单封装)

3,Ibatis

二:dbutils是一个开源的JDBC工具类库,是对jdbc的简单封装。

三:Dbutils的API介绍:

•org.apache.commons.dbutils.QueryRunner

•org.apache.commons.dbutils.ResultSetHandler

•工具类

org.apache.commons.dbutils.DbUtils、。

三:dbutils封装了jdbc的增删改查的操作,只需要new一个QueryRunner,然后调用其query方法,将sql语句,参数或参数数组,结果集处理器传递进去,就可以。

四:结果集处理器ResultSetHandler 接口的实现类

ArrayHandler:把结果集中的第一行数据转成对象数组。

ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。

BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。

BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。

ColumnListHandler:将结果集中某一列的数据存放到List中。

KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。

MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。

MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List

五:在mvc模式中,dao层只负责对数据库的操作,不应该有任何业务逻辑的代码,但是有一种情况,比如银行转账,几次数据库操作在一次事务中,在service中如何将转账服务放在一次事务中呢,一种解决办法是在dao层中保存一个Connection,由service传递进来对那个Connection操作,就可以解决这个问题。

六:在mvc模式下,如何进行事务管理呢,上面的方法是,所有的dao层共享同一事务,即同一连接,实现此需求的另外一种方法是使用ThreadLocale技术,这个对象保存的是一个线程为键的map,如果在dao层中将得到的Connection存放在这个map中,则在service中得到的连接就是同一连接,可以写一个工具类实现获取连接,提交,回滚,关闭等操作。

七:以上两种方法只能在dao层中实现共享事务,但是如果是servlet转发等情况,便不是同一连接,这时候就必须将事务管理提前到servlet之前,就写一个拦截器,每一次请求都获取连接,然后放行给servlet等,返回时再关闭连接等,缺点是占用连接时间过长,所以使用spring是好的方法,但是比较臃肿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值