使用Spring,Hibernate和mySQL进行事务管理
|
我使用Spring Framework 3和Hibernate 3.6在Web应用程序上工作,我试图了解事务管理的工作原理。
我将MySQL Server 5.1与InnoDB表一起使用。我基于简单的Hibernate 3 API编写了DAO。
1)mySQL Server本身指定事务处理方式是否正确?这意味着它决定何时需要锁定记录?
2)当我在Spring中将方法声明为@transactional(readOnly = true)或@transactional(readOnly = false)时,这是否会影响数据记录在事务期间的锁定?这意味着,当readOnly = true时,没有数据记录被锁定,而当readOnly = false时,所有使用的数据记录都被锁定?
3)当我获得readOnly = true并读取各种数据记录时会发生什么。让我们假设在阅读过程中它们被另一个事务更改了,所以我得到了一些旧记录和一些新记录。那可能吗?
4)什么时候提交?交易成功后或会话关闭时?
5)休眠会话何时开始?每个会话(服务器和客户端之间)还是每个事务?
6)最后,谁负责交易管理?春天或MySQL或两者兼而有之?
谢谢回答! :-)
没有找到相关结果
已邀请:
1 个回复
暑袜眠退
与事务无关,这是对Hibernate的提示,它表示Hibernate不应将对加载的对象所做的更改传播到数据库(即,如果您的事务不是,则可以将其指定为性能提示)打算将更改写入数据库) 4)什么时候提交?交易成功后或会话关闭时? 提交是终止事务的操作(另一种操作是回滚),因此它在事务结束时发生。 5)休眠会话何时开始?每个会话(服务器和客户端之间)还是每个事务? 默认情况下-对于每个事务,除非您在View支持中配置了Open Session。 6)最后,谁负责交易管理?春天或MySQL或两者兼而有之? 数据库提供事务行为的实现。 Spring通过定义事务边界并触发提交/回滚来管理事务。