@Test
public void update(){
Session session = HibernateUitl.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher) session.get(Teacher.class, 3);
t.setName("yangtb2");
session.update(t);
session.getTransaction().commit();
}
}
当执行上面的测试语句时,Hibernate会发出如下SQL语句
Hibernate:
update
Teacher
set
age=?,
birthday=?,
name=?,
title=?
where
id=?
这样,可能不需要更新的字段也参与了更新,显然会影响我们执行的效率
如何才能只更新部分字段呢,可以使用如下几种方案:
1)如果你的ORM使用的XML文件,则使用如下所示配置
<property name="age" update="false"></property>
2)如果项目采用注解,请使用
@Column(updateable=false)
3)当然你也可以选择使用HQL语句
4)如果使用XML配置,还可以使用dynamic-update
<class name="com.sccin.entity.Student" table="student" dynamic-update="true"> ,但是不支持注解