jdbc的batchupdate

问题的起点 1,接手深圳地税银税扣款接口 2,发现扣款业务数据操作流程中,事务控制存在问题

过程: 1,在看了jdk142doc和spring、hibernate api-doc后,发现在doc里面,就已经提及,doc只约定了应该要保证batchupdate,但是具体依赖于不同DB的jdbc驱动 2,不同的jdbc驱动处理batchupdate可能有几种情况  a,完整按照jdbc规范  b,按照自己实现,但是支持有限,如oracle 3,在batchupdate处理失败的情况下,  a,记录此DML操作失败,继续提交数据操作,返回结果数组  b,停止数据操作,或者回滚,或者不回滚

从目前的情况初步分析来看,是碰到3-b中不回滚情况

在紧接着的检查中发现2点需要记忆的东西: 1,PreparedStatement.executeBatch 如果此前它所在的connection已经执行过一个PreparedStatement,则第2次开始就无效  updateCount=0 需要调用executeUpdate

2,DB2的事务声明 解决方案,把 auto-commit 设置为false 。(如连接池里设置)

或 :

Properties properties = new Properties (); properties.put ("transaction isolation", "none"); try { Class.forName("com.ibm.db2.jdbc.app.DB2Driver") connection = DriverManager.getConnection("jdbc:db2://RCHASSC2", properties);

开源框架好是好,很多技术都定义了规范,将实现交给具体实现者。但我认为,这就增加了使用、集成者的工作难度,需要考虑实现特点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值