首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate 批量安插性能优化

2012-06-30 
hibernate 批量插入性能优化在使用hibernate进行批量数据插入的时候,性能往往是一个比较大的问题。性能优化

hibernate 批量插入性能优化

在使用hibernate进行批量数据插入的时候,性能往往是一个比较大的问题。性能优化主要就是减少与数据库交互的次数。首先要设置hibernate.jdbc.batch_size:

<prop key="hibernate.jdbc.batch_size">50</prop>

?

但是hibernate是对相同的prepared statement才会batch,当插入级联的表的时候,生成的sql一般会是insert into parent_table; insert into child_table交错,这样batch就不能起到很好的效果。这里需要设置hibernate.order_inserts让hibernate自动将所有产生的sql排序,以得到batch更好的优化效果

<prop key="hibernate.order_inserts">true</prop>

<prop key="hibernate.order_updates">true</prop>

?

另外对于插入时的主键设置,如果要用到数据库本身的sequence的话,避免每得到一个sequence值都访问数据库,应当采用hilo的主键生成机制,让数据库的sequence维护主键的高位,hibernate去维护低位。贴个例子

?

@Id

????? @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="hibseq")

????? @GenericGenerator(name = "hibseq", strategy = "seqhilo", parameters = {@Parameter(name = "max_lo", value = "9999"),

?????????????????@Parameter(name = "sequence", value = "VAL_TYPE_SEQ") })

????? private Integer val_type_id;

完成以上几点配置,hibernate的批量插入性能能有很大提升。

热点排行