只更新数据库部分字段数据的方法

只更新数据库部分字段数据的方法:
Hibernate中如果直接使用Session.update(Object o);会把这个表中的所有字段更新一遍。
(一)通过控制Hibernate的update语句set后面不出现该字段即可,有3种方法:
(1)XML映射文件中设置property 标签 update = "false" ,如下:设置createTime这个属性在更新中不做修改
 



在注解中 在属性GET方法上加上@Column(updatable=false)
@Column(updatable=false)
    public int getCreateTime() {
        return createTime;
    }
执行update方法会发现,createTime属性不会被更改(不会出现在set后面)
(2)使用XML映射文件中的 dynamic-update="true"

这样就不需要在字段上设置了,
将dynamic-update设置为true,同样的更新,hibernate会动态生成SQL语句,没有值的字段不会出现在update语句中
但这样的方法在注解中没有。
(3)使用HQL语句(灵活,方便):
Query query = session.createQuery("update Teacher t set t.name = 'admin' where id = 3");
这句hql语句执行后,只会更新name属性
(二)在web环境中,可以将不需要修改的字段放入session作用域中保存,调用后台update方法时再取出来,
这样,在hibernate执行update语句时,set也会出现该字段,但由于该字段的数据的数据是从session中取出来的,
所以也不会改变该字段的值。(所有框架都适用)

你可能感兴趣的:(java,hibernate)