浅谈hibernate save ,update 和 saveOrUpdate的区别

    最近由于工作的需要使用批量插入数据,如果使用SQL语句构造,有两种方式:1、一个一个执行,2、构造很长的SQL语句然后一次性执行

先来说一下这种方式的缺点:1、构造SQL语句麻烦,容易出现问题,如果表字段过多,SQL语句很长,2、无论是一次性还是多长执行都会花费很长的时间

建议:如果使用这种方式最好不要使用String 构造SQL语句,在可控范围内可以这样使用,如果数据量很大,最好不要这样做。

hibernate save :对于save方法没次使用的时候都要重新new 一个对象出来或者session.flush ,session.clear ,并且这种要求id是自动生成的,如果没有进行session操作,在操作的时候实际上一直更新这个对象,这和update没有任何区别

update:在大部分使用update语句之前都要获取到这个对象,这样才能保证id是获取到了,并且是实际上的更新,不然可能会包异常,更新语句伴随load或者get而使用

saveOrUpdate:有些情况下并不知道我们获得到的对象或者构造的对象,数据库中有没有,这个时候就会使用这个方法,这个方法的使用一般是id自动生成的,如果不是很有可能会出现id为空的现象。

update 和 saveOrUpdate实际大家使用的对较多,没有什么好说的。save用的也不较多,我主要想说批量插入的时候一定要注意save的使用,在构造大量的对象或者大量使用session.flush ,session.clear,针对两者的效率我没有做测试,要使用什么方法要自己根据实际情况而定。至于有没有更好的方法,我暂时不知道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值