Hibernate 笔记6 动态更新
前面的更新操作中已经说明,进行更新必须更新表中的所有字段,或者不更新的字段,在映射文件中的相应<property>中加入update="false" 如
<property name="name" column="name" update="false"></property>
多个字段不更新的话,需要在多个<property>中进行设置,颇为麻烦,使用动态更新就简单多了。
步骤:
1 映射文件中<class>中加入 dynamic-update="true"
2 需要更新的对象调用load的方法
3 设置需要改变的属性
4 事务提交
映射文件:
<hibernate-mapping >
<class name="com.pk.Test.po.User" table="user" dynamic-update="true">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="name" column="name"></property>
<property name="pwd" column="pwd"></property>
</class>
</hibernate-mapping>
测试:
public void TestUpdate2() throws Exception{
User user=null;
Configuration config=new Configuration().configure();
SessionFactory sessionFactory= config.buildSessionFactory();
Session session=null;
Transaction tx=null;
try{
session=sessionFactory.openSession();
tx=session.beginTransaction();
user=(User) session.load(User.class,1); //通过load查找到id为1的user对象
user.setName("44"); //对user的姓名更新
tx.commit(); //提交事务
}catch(Exception e){
tx.rollback();
}finally{
if(session!=null){
session.close();
}
if(sessionFactory!=null){
sessionFactory.close();
}
}
}
结果:
Hibernate: select user0_.id as id0_0_, user0_.name as name0_0_, user0_.pwd as pwd0_0_ from user user0_ where user0_.id=?
Hibernate: update user set name=? where id=?