2014年03月 归档

深圳,暴雨,小记

今天早上8点多,突降暴雨
sz_rainstorm1
公交车进水了 查看更多...

使用Spring的getHibernateTemplate()进行批处理(JDBC兼容方案)

一直很抵触hibernate,原因不多说,总知是能不用就不用。最近项目有大量数据导入的需求,一直出现连续导入10w左右就内存溢出之类的情况,开启事物,分页flush session还是挺慢,换对象为SQL,拼装语句块直接执行效果也不理想。看到网上说的使用传统批处理速度要高10倍左右,于是试了试,还算可以。

由于项目其他地方有采用hibernate,甚至还用了iBATIS,不能随意更换框架或者改动接口。

网上很多采用sessionFactory.connection();获取Connection的文章,用过的朋友可能就知道,这个方法在Hibernate3.3.2版本中已被弃用。
替代方法:SessionFactoryUtils.getDataSource(sessionFactory).getConnection();
也可以直接使用:((SessionFactoryImplementor)sessionFactory).getConnectionProvider().getConnection();

获取到Connection后就好说了,做法完全是传统Jdbc的。通过这个方法单独实现一个大批量插入的接口也不是什么难事了,这里不再赘述。

Oracle中varchar2(* char)与varchar2(*)的区别

最近用到Hibernate自动建表,在用到String的时候,默认会创建varchar2类型字段,如:设置length=10,则创建后字段属性为varchar2(10 char),而非varchar2(10)。

由于之前没留意到这个,就网上查了一下,才知道原来基础都没记牢(也许一开始就没接触到,至少印象中一直使用的后者)。其实,这个这两种写法还真有点不一样之处,varchar2(10 char)表示10个字符,这个类型可以存储10个多字节字符的,如如10个汉字,而varchar2(10)实际上市varchar2(10 byte)的简写,表示两个字节,注意,前者是字符,这里是字节,就是说这个类型是不能存储10个多字节字符的。

偶然发现,总结下,以备忘。玩数据库比较少,熟手勿拍!

两种方式清除Ubuntu多余启动项

昨天看到Ubuntu有不少更新(有一段时间没有用了),就升级了下,事后发现有升级内核,导致引导项有两个,强迫症泛滥的时代,绝对是受不了的。所以还是手动清理下吧。

因为Ubuntu是由grub引导启动的。每当Ubuntu升级到新的版本后,grub会自动调整开机启动菜单的顺序,把新的内核放在启动菜单的开始,但不会删除旧的内核版本。这样,当Ubuntu的升级次数一多,启动菜单中将变得非常臃肿。而且那些旧版本的内核基本不会用,不如删除之。通常的解决方案如下

1.找出系统已经安装的内核版本,在终端里输入命令:

dpkg --get-selections | grep linux-image 查看更多...

关闭博客注册功能,关闭游客评论功能

近来垃圾客们越来越猖狂,一直开放注册的博客被注册了1700多用户,还好都是订阅者身份,但每天邮件一堆堆的轰炸,实在受不鸟,果断关了。

真想不通以前为嘛没有关闭呢,作为一个个人博客,也不接受外部投稿,开着真心没用。

另外,对于越来越多的垃圾评论,虽然有多重过滤器,还是过滤不掉,所以还是选择禁止游客评论好了。