Java HIbernate中的事务
在以下代码中:Java HIbernate中的事务,java,hibernate,Java,Hibernate,在以下代码中: SessionFactory sessionFactory = new Configuration().configure("student.cfg.xml").buildSessionFactory(); Session session = sessionFactory.openSession(); //Transaction tran = session.beginTransaction(); session.save(student); //
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();
无论我是否注释/取消注释事务,它们都可以正常工作,即在没有事务的情况下也可以成功执行保存操作。但是当我检查文档时,他们总是在插入更新删除之前使用事务。有什么具体原因吗?我错过什么了吗
请让我知道这件事。我相当困惑:(
关于,当您总是使用自动提交时,它可能会损害您的数据库。假设您希望一次提交一堆工作。在这种情况下,您需要创建事务并在完成所有工作后提交所有工作。例如,您需要为原子工作执行大量数据库访问。在这种情况下,您需要执行所有在事务中工作并提交所有工作
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
// do some work
tx.commit();
当然是用你的挡块。阅读
这篇文章来自JBOSS
有一件事我相信,如果您不使用事务(在某个时候您可能需要它,如果不需要原子操作的话)然后,任何与数据库相关的操作都会命中数据库。这会使系统变得非常慢。如果您执行事务,那么hibernate会通过一次命中数据库来完成同一事务中的所有操作。在某个时候,我以前读到过这一点。我认为hibernate中的非选择查询正在执行多个查询(或使用多个操作)这就是为什么我们需要事务来执行它们。DML命令需要显式提交..您是否检查了Insert、Delete、Update命令?好的,所以我从您的帖子中了解到:1)如果我不使用事务,则会发生隐式提交,而如果我使用事务,则显式提交数据。2) 隐式提交是有害的,因此事务应该用于显式提交。如果我没弄错,请告诉我。如果我错了,请加些东西。“有害”这个词可能不是正确的,因为它是关于你的设计的。事务是一组数据访问操作。如果多个数据库操作对您来说是一个单元工作,那么您需要将所有这些操作提交到一起,这意味着它们必须在一个事务中。我对您的第一个响应有一个疑问:假设我读取了一些数据,开始一个事务,那么事务中的数据也有可能得到更新,对吗?你能解释一下这句话吗?别跟我的例子混淆了。我想说的是工作单位。您有一个操作是原子操作,它需要执行多个db操作。在本例中,您将它们放入事务中。(这就像做所有的事或不做任何事)好的,术语
做所有的事或不做任何事
很清楚。我尝试了两个连续的保存操作,在第二个保存操作中故意违反了某些规则。如果添加事务,则不会添加有效或无效的保存操作行。但是,如果我删除了该事务,则会插入第一个有效保存,但不会插入第二个有效保存。除了这个多数据库操作场景之外,这个事务还有其他用途吗?请让我知道。谢谢你的回复