刷新不保存数据库中的数据

时间:2014-05-18 14:59:52

标签: hibernate flush

当我在外部刷新内容时,它不会将其保存在数据库中。例如,下面的代码不会将其保存在DB中:

public class save {
    public static void main(String[] args) {
        emp a=new emp("klds","asda",12231);
        emp b=new emp("asd","asd",213);
        emp c=new emp("ERTE", "retre", 1323434);
        Session session=myfactory.getSession();
        session.save(a);
        session.save(b);
        session.save(c);
        session.flush();
        session.clear();

    }

但是当我使用交易时,它会将其保存在数据库中。为什么这样做?

2 个答案:

答案 0 :(得分:2)

flush只有synchronization的数据库,然后您需要commit才能看到更改。

如果您只是commit。它会自动flushes,您也可以从其他会话中看到您的更改。

当我们致电session.flush()时,我们的陈述将execute在数据库中,但不会是committed

但是如果我们不在会话对象上调用flush()方法,并且如果我们直接调用commit方法.... commit将在内部调用flush(做的工作执行数据库上的语句)然后committing

所以commit=flush+commit

因此,当我们在Session对象上调用方法flush()时,它不会commit,而是命中数据库并executes查询和rollback相同的

所以要提交,我们必须在commit()对象

上使用Transaction

答案 1 :(得分:0)

尝试将会话的FlushMode更改为MANUAL

session.setFlushMode(FlushMode.MANUAL)
相关问题