hibernate部分字段更新完美解决
使用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
- 推荐内容
-
- jquery.validate 自定义验证方法
$(document).ready( function() { // 字符最小长度验证(一个中文字符长...
- jQuery.validate 中文API
jQuery.validate 中文API ( HappyCZX ) 名称 返回类型 描述 validate(op...
- jQuery.validate 用法
名称返回类型描述 validate(options)返回:Validator验证所选的FORM val...
- jquery.validate 自定义验证方法