Hibernate中merge()方法的坑

标题Hibernate的merge方法的原理网上已经有很多篇文章介绍了:

执行merge后,如果传入的对象有ID,merge会先去数据库通过ID查,若查到则改,若查不到则增。
也就是说,相比直接insert或是update,用merge的实现会多一条selete语句

默认的查询语句格式大概是这样,带有强烈的Hibernate特色:

SELECT
	student0_.s_id AS trace1_41_0_,
	student0_.s_name AS task2_41_0_,
	student0_.s_birth AS user3_41_0_,
	student0_.s_sex AS trace4_41_0_,
FROM
	student student0_ 
WHERE
	student0_.s_id = 1

工作中有个业务会向表里插入大批量的数据,以前的老前辈封装的工具类是用Hibernate的merge方法来实现的,边查边插,差点给数据库干挂了。
要入库的数据都是经过了处理的,主键由雪花策略生成,所以不会有主键重复的风险,基于这个,我们在之后将底层的merge()换成了save(),问题解决。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值