如何使用Hibernate来管理事务 - 编程入门网
如何使用Hibernate来管理事务时间:2011-02-27在数据库应用程序中最基本的操作是CRUD(创建/读取/更新/删除),这4个操作构成了数据库应用程序的基石。在单机时代,一个数据库只由一个应用程序使用,这样CRUD操作并不会带来什么负面影响,但当进入网络时代后,这一切都发生了改变。由于网络数据库程序一般是由多个客户端同时操作一个数据库,因此,传统的CRUD操作将变得不再安全。因此,这个问题将引出本文的中心内容:事务。通过事务可以使传统的CRUD操作适应网络数据库应用。 本文分为三个部分。第一部分讨论了Hibernate如何管理事务和会话。第二部分描述了Hibernate用于管理事务和会话的核心API。在第三部分将举一个如何应用会话和事务的例子,并讨论了ThreadLocal变量。 Hibernate中的会话和事务 所谓会话,就是一个客户端从登录服务器开始,到登出服务器为止,在这期间关于客户端和服务器之间的所有活动。一个会话中可包含一个或多个事务,每一个事务是一原子操作,这个原子操作中可以包含多个操作,但这些操作是一个整体,要么都成功,要么都失败。在讨论Hibernate的会话和事务之前,让我们先来了解一下事务在底层是如何工作的。在Java中的操作数据库一般是和JDBC直接打交道,而JDBC则是直接通过Socket和数据库打交道。我们所说的底层实际上就是指JDBC和数据库层。 首先,让我们来看看数据库事务。数据库的操作由很多CRUD操作集合组成。而每一个集合就是数据库的一个事务。一个事务由begin transaction开始,最后以commit或rollback结束,这两个事务结束语保证了这一组CRUD操作要么都成功执行,要么回到执行前的状态。换句话说,这一组CRUD操作只要有一条语句执行失败,整个组都将回滚。这么做是为了保证数据的完整性。 如果事务中只有一个操作,那么事务是否提交,只依赖于这个操作的成功或失败。如一条INSERT语句,只有在这条语句成功执行后,数据才被真正写到数据库中。 现在让我们来看看事务中包含多条CRUD语句的情况,如包含一条UPDATE语句和二条DELETE语句。在这种情况下,不管这三条语句哪一条执行失败,整个事务都将回滚。 在使用事务时为了不产生负面影响,常常要对事务进行划分,即将一个大的事务合理划分成一些小的事务。这样如果某一个事务回滚的话,就不用回滚所有操作了。至于将大事务划分成多少个小的事务,这就要根据具体的情况而定。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |