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=?

posted @ 2011-11-03 22:09  蓝冰竹斋  阅读(885)  评论(0编辑  收藏  举报