表的同步、hibernate随想

两个相同表(A-》B)之间数据同步方案--
1.直接删除B表数据,整个插入
2.建临时表,记录A表的操作,用字段表示 新增、删除、修改,然后查询临时表,把那些相关操作的 反应到B表
3.使用SQL比较两边数据的差异。A表新增的话,如select * from A where not exists (select 1 from B where A.pk=B.pk) ,把这个数据新增到B表。删除的话,两个表反过来即可。修改的话,select A.* from A ,B where A.filed1 <>B.field1 and A.field2<>B.field2 ... and A .pk =B.pk 查询出A修改的记录,再更新到B表里面


延伸: hibernate 对记录的修改持久化,一般作修改操作时候,因为页面上有些字段没改,会有Null值,这时一般会先从数据库里查询一下,然后copyNotNull (source、target无所谓,但是为了性能会把查出来的作为target,下面讲为什么),--此时如果hibernate能像ibatis那样有个对字段空值的判断就好了、就不需要查询再copy了。再持久化。 如果,持久化的记录是persistent状态,hibernate会比较缓存里的和新的,只对修改过的进行更新,不会所有字段都更新(应该是这么处理的,挨个比较字段值,不等的,放入Map里,做update时候,再拼接这个Map 里的字段和值)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值