草庐IT

TRANSACTIONS

全部标签

java - Hibernate:session.get(EntityName.class, Id) 和使用 Criteria 之间的区别

到目前为止,我已经看到了两种从数据库(例如MySQL)检索对象的方法,一种是session.get(EntityName.class,Id);另一种是:criteria.add(Restrictions.eq('id',Id)).uniqueResult();当我想更新对象中的单个字段时,我发现第一种方式很方便,我可以使用setter更新对象然后提交事务,但我不确定这两种方式有什么区别。 最佳答案 Session.get()如果实例已经与session相关联,则返回该实例。条件总是转到数据库以获取特定行。除此之外,您可以发现的主要区

mysql - 在事务中设置 autocommit=0 有什么作用吗?

我正在审查另一位开发人员的代码。他有一个在MySQL事务开始时显式添加setautocommit=0的提交。这会导致session中其他非事务性查询出现问题。在事务中添加setautocommit=0对那个事务有什么作用吗?我认为它不会,因为无论如何事务都会隐式地执行此操作。[对于这次提交,我能想到的唯一理由可能是数据库曾经使用过MyISAM(相对于当前的InnoDB),这可能是模仿前者事务的一种方式?] 最佳答案 如果事务处于事件状态,则它不受SETautocommit=0的影响。否则,如果autocommit的前一个值为1,则S

MySQL 中的 PHP "Nested"事务可以使用以下代码实现吗?

好的,我正在使用PHP为MySQL中的“嵌套”事务寻找解决方案,正如您在MySQL文档中所知道的那样,不可能在事务中包含事务(Mysqltransactionswithintransactions)。我试图使用http://php.net/manual/en/pdo.begintransaction.php中提出的数据库类但不幸的是,这对我来说是错误的,因为它的计数器范围是对象级别而不是类级别,为了解决这个问题,我创建了这个类(TransactionController),它有计数器(名为$nest)static并且它带来了使交易“线性”所需的类级别(“线性”我是说:它显然是嵌套的,但

MySQL 事务隔离级别被破坏?

我似乎无法在32位x86Debian上安装MySQL5.0.32以支持事务隔离级别。我已将我的问题简化为最简单的形式,并使用mysql命令行客户端进行了测试:--Onnodewriter:--DROPTABLEtest;CREATETABLEtest(nameVARCHAR(255));setautocommit=0;settransactionisolationlevelreadcommitted;begin;--Onnodereader:--setautocommit=0;settransactionisolationlevelreadcommitted;begin;--Onnod

PHP mysqli::自动提交 VS "START TRANSACTION"

在我们的数据库层对象中,我们一直使用通过mysqli::query执行的“STARTTRANSACTION”、“ROLLBACK”和“COMMIT”SQL语句来管理事务。今天做了一些研究,我发现了thismentionintheMySQLManual关于使用API级调用来管理事务VS使用直接SQL:ImportantManyAPIsusedforwritingMySQLclientapplications(suchasJDBC)providetheirownmethodsforstartingtransactionsthatcan(andsometimesshould)beusedin

mysql - 在事务中使用 MySQL Insert Delayed 时会发生什么?

插入是否随着事务提交完成?或者它们可以稍后完成? 最佳答案 根据MySQLDocumentation:INSERTDELAYEDworksonlywithMyISAM,MEMORY,ARCHIVE,and(asofMySQL5.1.19)BLACKHOLEtables.ForenginesthatdonotsupportDELAYED,anerroroccurs.这些引擎都不支持事务,因此在功能上没有冲突。我想您会发现延迟插入和事务的支持将相互排斥。 关于mysql-在事务中使用MySQ

mysql - 使用 Spring、Hibernate 和 mySQL 进行事务管理

我正在使用SpringFramework3和Hibernate3.6开发一个Web应用程序,我试图了解事务管理的工作原理。我将mySQLServer5.1与InnoDB表一起使用。我基于普通的Hibernate3API编写了我的DAO。1)mySQLServer本身指定如何处理事务是否正确?这意味着它决定何时需要锁定记录?2)当我在spring中将方法声明为@transactional(readOnly=true)或@transactional(readOnly=false)时,如果数据记录在事务期间被锁定,这会影响吗?这意味着,当readOnly=true时,没有数据记录被锁定,而当

php - MySQL 事务是原子的吗?

我读到事务在MySQL(InnoDB)中是原子的,但是当我在5个线程中测试下一个代码时,它们选择相同的ID:$db->beginTransaction();$row=$db->fetchRow("SELECT*FROMatomicWHEREselected=0LIMIT1");sleep(5);$db->update("atomic",array('selected'=>1),"id=".$row['id']);$db->commit();echo"Selectedrow:".$row['id']; 最佳答案 你应该看看FORUPD

java - 使用 DAO 进行事务管理

在我的Java应用程序的DAO层中,我有两个DAO类EmployeeDAO和BankDAO。我需要控制/处理他们的数据库事务。我使用连接池来获取数据库连接。EmployeeDAO类:publicclassEmployeeDAO{Stringname;StringempCode;intage;//Getters&Setters}BankDAO类:publicclassBankDAO{StringbankName;StringacNo;StringempCode;//Getters&Setters}假设我要在两个数据库表中存储与该员工相关的员工和银行帐户详细信息。首先我保存员工,其次我保存

MySQL 嵌套事务 - 不回滚

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:ArenestedtransactionsallowedinMySQL?我有一个使用事务的存储过程,在事务内部调用另一个也使用事务并更新表的过程。第二个过程在循环内调用,每次调用都会更新一行。第二个过程还创建了一个临时表。引擎是永久表的InnoDB和临时表的MyISAM。MySQL版本为5.5.16。我想要的是如果发生错误,回滚第二个过程所做的所有更新。这可能吗?我知道一条DDL语句并开始事务;将发出提交,但有解决办法吗?代码看起来像这样:(回滚显然不行)delimiter$$dropprocedureife