商业支持|产品购买|技术支持|关于我们|联系我们

当前位置: SHOP++网店系统 > 技术支持 >

hibernate部分字段更新完美解决

时间:2009-12-25 00:10来源:未知
使用hibernate的update方法,会自动更新全部字段,属性值为null的对象数据库字段也会被更新为空. 一般的解决方法是: 1:使用Hql语句,但这样复用率较低. 2:在对象更新之前先将其从数据库中
  

使用hibernate的update方法,会自动更新全部字段,属性值为null的对象数据库字段也会被更新为空.
一般的解决方法是:
1:使用Hql语句,但这样复用率较低.
2:在对象更新之前先将其从数据库中查询上来再对其属性一个个赋值,然后进行更新操作,这种处理方式

显然增加了重复代码.
以上两种方式都存在部分不足,而且在WEB开发中尤其在Struts2+hibernate进行开发时,页面传递参数后

Struts2会对对象进行自动赋值,已经赋值的对象在更新前又要进行一次手动赋值再update,这样明显失

去了sturts2的自动转换的意义。

我们的解决方式,其原理是先得到需更新的对象,然后查询数据库中的值,并对不需要更新的属性用数据

库中的值进行填充,最后再进行更新操作。虽然看上去也要赋值也会出现多余代码的情况,但这种赋值可

以通过DAO方式实现的自动赋值。

大致Dao原理:
使用sessionFactory.getClassMetadata方法获取ClassMetadata对象再获取实体属性信息,根据实体属性

信息判断对象属性是否需要更新,对于不需要更新的对象属性再用数据库中的值进行填充,最后完成对象

的更新操作。

具体代码请参考java开源网店系统shop++中的Dao方法,里面有详细注释。shop++网址:http://www.shopxx.net

 

推荐内容