0

在下面的代码中:

SessionFactory sessionFactory = new Configuration().configure("student.cfg.xml").buildSessionFactory();
    Session session = sessionFactory.openSession();
    //Transaction tran = session.beginTransaction();
    session.save(student);
    //tran.commit();
    session.flush();
    session.close();

无论我是否评论/取消评论事务,它们都可以正常工作,即没有事务也可以成功执行保存操作。但是当我检查文档时,他们总是在插入更新删除之前使用事务。有相同的具体原因吗?我错过了什么吗?

请让我知道这件事。我很困惑:(

问候,

4

3 回答 3

1

阅读这篇 文章来自JBOSS

我相信一件事,如果你不使用事务(在某些时候你可能需要它,如果不需要原子操作)那么任何与数据库相关的操作都会命中数据库。它使系统变得疯狂缓慢。如果你做事务,那么休眠会在同一个事务中完成所有操作,一次点击 db 。在某个时候,我以前在某个地方读过。

于 2012-11-03T16:35:02.660 回答
1

当您总是使用自动提交时,它可能会损害您的数据库。假设您想一次提交大量工作。在这种情况下,您需要在完成所有工作后创建事务并提交所有工作。例如,您需要为您的原子工作执行大量数据库访问。在这种情况下,您需要完成事务中的所有工作并提交所有工作。

Session session = factory.openSession();
Transaction tx = session.beginTransaction();

// do some work
tx.commit();

当然还有你的 catch 块。

于 2012-11-03T16:05:57.130 回答
0

我认为休眠中的非选择查询正在执行多个查询(或使用多个操作),这就是我们需要事务来执行它们的原因。

于 2013-09-04T06:16:55.680 回答