开发者社区 问答 正文

关于hibernate修改数据的疑惑

各位大神,请教一个关于hibernate修改数据的问题,看代码

    public void addUser(){
        System.out.println("begin.......");
        Session session = null;
        Transaction transaction = null;
        session = SessionFactoryUtil.getSessionFactory().openSession();
        transaction = session.beginTransaction();
        System.out.println("开始修改用户信息");
        User u = (User)session.get(User.class, 2);
        u.setUsername("ddTest");
        session.saveOrUpdate(u);
        System.out.println("修改用户信息成功。。。。");
        transaction.commit();
        session.close();
        System.out.println("end.......");
    }
这样可以把一个ID为2的用户数据name改为ddTest,没有什么疑问。再看
    public void addUser(){
        System.out.println("begin.......");
        Session session = null;
        Transaction transaction = null;
        session = SessionFactoryUtil.getSessionFactory().openSession();
        transaction = session.beginTransaction();
        System.out.println("开始修改用户信息");
        User u = (User)session.get(User.class, 2);
        u.setUsername("ddTest");
        //session.saveOrUpdate(u);
        System.out.println("修改用户信息成功。。。。");
        transaction.commit();
        session.close();
        System.out.println("end.......");
    }

这样,不用saveOrUpdate,数据一样被成功修改。这是为什么呢?是事务在提交时把一级缓存里的对像flush到数据库了吗?那如果这样的话要saveOrUpdate之类的方法还有什么用呢?求高手大神解惑,小弟在此感谢。

展开
收起
小旋风柴进 2016-03-17 08:57:22 2071 分享 版权
1 条回答
写回答
取消 提交回答
  • 这个问题的本质是没有看hibernate的原理,想用自己写代码的方式验证一下,那么在这里我们可以多些几个测试类,关注一下

    transaction.commit();
    session.close();
    对saveOrUpdate方法的影响!

    希望能够帮助到你!

    2019-07-17 19:04:22
    赞同 展开评论
问答标签:
问答地址: