了解下JAVA的iBatis框架做batch处置的成绩
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。比来,同事的一个项目用Spring+iBatis做为数据耐久层框架,MySql数据存储。项目公布不久就碰到了严峻的功能成绩,因而决意接纳batch的体例提交数据。我之前的一篇文章:里具体的先容了iBatis框架做batch处置的体例和大概存在的成绩和功能优化,因而同事参考这偏文章对项目举行了改革,引进了batch处置机制。但事变其实不顺遂,在只要2000条数据的情形下,用iBatis框架做batch处置和不做batch所损耗的工夫竟然没有区分,均匀都要50秒摆布。而我在做测试的时分假如做batch仅仅必要1秒,乃至更少的工夫。真是见鬼了,岂非是Spring在弄鬼?由于我的测试和同事的项目独一的区分就是我是间接利用iBatis的SqlMapClient,而同事的项目是利用Spring来猎取SqlMapClient的实例。细心反省了一下伴侣的数据源设置,也没有发明甚么成绩。以下:
<beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<propertyname="driverClassName"value="com.mysql.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://localhost/test"/>
<propertyname="username"value="root"/>
<propertyname="password"value="root"/>
</bean>
<beanid="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<propertyname="configLocation"value="SqlMapConfig.xml"/>
<propertyname="dataSource"ref="dataSource"/>
</bean>
就在万般无法的时分,俄然想到一个成绩:假如JDBC的AutoCommit属性被设置为true的话,那即使是依照batch的体例来写程序,也是白费的,每条语句城市间接实行。因而抱着碰运气的立场实行了上面的语句:
System.out.println("以后事物形态:"+sqlMapClient.getDataSource().getConnection().getAutoCommit()); 公然不出所料,输入的值为:true,难怪batch不成用!成绩找到了,怎样办理呢?实验在batch语句实行前手工设置autoCommit属性为false,如:sqlMapClient.getDataSource().getConnection().setAutoCommit(false);了局欠好用,因而检察了一下org.apache.commons.dbcp.BasicDataSource的源代码,发明它的defaultAutoCommit属性默许值为true,这就难怪spring猎取的SqlMapClient的autoCommit属性为true了,既然成绩找到了,办理起来就简单多了,只必要在下面的datasource设置中增添一行:<propertyname="defaultAutoCommit"value="false"/>就能够了。
这里总结一下:iBatis默许的autoCommit属性为false,因而用iBatis框架做batch处置的时分基础不会碰到甚么成绩;在Spring情况下,要看详细DataSource的设置。
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 是一种为 Internet发展的计算机语言 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
页:
[1]