hibernate 更新数据的几种方式

方式一:

      使用hibernate的缓存和快照机制,

      hibernate  向一级缓存放入数据时,同时保存快照数据 ( 数据库备份 ) ,当修改一级缓存数据,在 flush 操作时,对比缓存和快照,如果不一致,自动更新 ( 将缓存的内容同步到数据库,更新快照 ).

 /**
2.  *  测试快照区的使用
3.  */
4.  @Test
5.  public void demo() {
6.  //  获得 Session
7.  Session session = HibernateUtils.openSession();
8.  //  开启事务
9.  Transaction transaction = session.beginTransaction();
10. //  查询 id  为 1  的图书对象
11. Book book = (Book) session.get(Book.class, 1); //  第一次查询,将对象加入一级缓存
12. System.out.println(book);
13. book.setName(" 深入浅出 Hibernate 技术 "); //  修改书名(一级缓存被修改,自动 update )
14. //  没有手动执行 update ,因为快照区原因,自动更新
15. //  提交事务,关闭 Session
16. transaction.commit();
17. session.close();
18. 

方式二:

  使用hibernate的update()方法

  使用该方法有一个问题就是会修改对象中的所有字段,当我们表中有字段是文本类型,这个类型存储的内容是几千,几万字,这样效率会很低.(当然如果一定要使用该方式,也有解决方案,可自行百度)

1. @Test
2. public void update(){
3.   Session session = HibernateUitl.getSessionFactory().getCurrentSession();
4.   session.beginTransaction();
5.   Teacher t = (Teacher) session.get(Teacher.class, 3);
6.   t.setName("张老师");
7.   session.update(t);
8.   session.getTransaction().commit();
   }

方式三:

使用 HQL 语句 executeUpdate()

1.  public void update(){
2.    Session session = HibernateUitl.getSessionFactory().getCurrentSession();
3.    session.beginTransaction();
4.    Query query = session.createQuery("update Teacher t set t.name ='n' where id  = 3");
6.    query.executeUpdate();
7.    session.getTransaction().commit();
8.  }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值