最近要用到Spring+Hibernate来开发。下面来说一下这两都组合后的事务管理问题。
首先我们来明白什么是事务,简单的说就是一次对数据库的操作。事务它有四个特性:原子性,持久性,隔离性和一致性。
原子性是指:对数据库的一次原子操作,要么从里写数据,要么删除数据。
持久性是指:这一个操作对数据库的影响是永久的,比如说向数据库里写入了一些数据,之后遇到的一些与物理硬件不相关的一些系统故障,但是这个被写入的数据在数据库里面还是存在的。
隔离性是指:由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。事务识别数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是第二个事务修改它之后的状态,事务不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
一致性是指:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。
我们在项目开发时也一定是能用到事务的。下面我们就来说一下在Spring+Hibernate的环境下怎么来配置事务。首先要明白的是在这里我们要用Spring来管理事务。
在Spring中事务管理有二种方法:声明式事务管理和编程式事务管理。我们最常用的是声明式事务管理。在Spring中声明式的事务管理是用Spring的AOP来实现的。了解了这些后我们要考虑的是我们的事务到底要加在那一层,在我们的项目中往往将事务加到serivce层,这样做的好是:比如在DAO层我有三个方法来对数据进行操作,而我们的一次业务逻辑,需要我们要调用这三个方法才能完成这个一业务而这三方法还要放到一个事务中去,我们要是将事务配在DAO层我们做法只有将这三个方法分别加上一个事务,这显然违背了我们的业务需求。而在我们的service层中可以用一个方法来调用Dao层中的这三个方法,这样我们只要将serive层中的这个方法加上一个事务控制,我们业务需求就很容易的解决了。所以我们将事务大多数的要加在service层上。
在Spring的配置文件中加入这些是非常容易的。我们来看一下:
是不是很简单呀,我们来说一下,这里到底是什么意思:
首先我要配置好我们的事务管理器,在这里我们使用是Spring提供的一个Hibernate的事务管理器(位于org.springframework.orm.hibernate3包中的HibernateTransactionManager类),再就是我们要向这个类中注入一个session;它的配置和在Spring中配置基本的bean一样简单。
第二步就是我们要给那个哪些业务方法加上事务了,也就是事物特征的配置:在这里我们就要用AOP了不过也是非常简单的。我们要用一个事务通知<tx:advice>来指向我们用的是哪一个事务管理器。然后用一个<tx:attributes>下的<tx:method>来指定我们要为哪些方法加上事务操作。例:<tx:method name="del*" propagation="REQUIRED">意思是说我们要将所有以del打头的方法加上事务,事务的级别为REQUIRED级别。基中<tx:method name="*" read-only="true">是说其它的方法我全部只读事务。
最后我们要完成的工作是:要确保我们在上面定义的事务在合适的时候被执行。在这里我定义一个切面,再定义一个切入点用来说明我们要作用在哪个类或接口中的的方法上。在这里最好是作用在接口上。最后我们再定义一个通知器来和我们的事务特征绑定在一起。并将切入放在我们的一个接口上。
分享到:
相关推荐
总结一下,`Spring Hibernate事务实例`涵盖了以下核心知识点: 1. Spring框架的声明式事务管理:通过`TransactionInterceptor`和`@Transactional`注解实现。 2. Hibernate事务管理:使用`...
在Spring中,我们可以配置`PlatformTransactionManager`接口的实现类,如`HibernateTransactionManager`,它会自动感知Hibernate Session并管理事务。通过声明式事务管理,我们只需在方法上添加`@Transactional`注解...
3. **Hibernate事务配置:**在Spring中,需要配置Hibernate SessionFactory,并将其注入到需要进行数据库操作的服务中。同时,通过`PlatformTransactionManager`接口(如HibernateTransactionManager)配置事务管理...
在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...
在Spring框架中集成和配置Hibernate事务管理是企业级Java应用中的常见实践,它能提供高效且灵活的事务处理策略。Spring作为一款强大的依赖注入(DI)和面向切面编程(AOP)容器,能够轻松地管理和协调不同数据访问...
标题中的“memcache也spring,hibernate的配置”指的是如何在Java开发环境中,结合Memcached缓存系统、Spring框架和Hibernate持久化框架进行集成配置。Memcached是一种高性能的分布式内存对象缓存系统,用于加速动态...
在Spring与Hibernate的结合下,MySQL的事务控制可以通过设置不同的隔离级别(如READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)来优化并发性能和避免数据竞争问题。 在实际开发中,我们还需要...
这通常通过XML或Java配置完成,包括Spring MVC的DispatcherServlet配置、数据源配置以及Hibernate SessionFactory配置。 2. 配置Spring MVC:设置DispatcherServlet,处理HTTP请求,并配置HandlerMapping和...
当我们需要在应用程序中进行事务管理时,Spring提供了一种声明式的方式,使得事务配置更为简洁。本篇将详细介绍如何在Spring 3和Hibernate 4中通过注解来实现声明式事务管理。 首先,我们需要在项目中引入Spring和...
在`Spring_1800_Spring_Hibernate_Transaction_Annotation`这个压缩包文件中,很可能包含了使用注解方式实现Spring整合Hibernate事务处理的相关示例代码和配置文件。通过阅读和理解这些代码,你可以更好地掌握这一...
本项目是关于如何使用Spring MVC与Hibernate结合来实现事务管理的实践教程,通过MyEclipse自动生成所需的包和配置文件。这里将详细讲解这一过程,以及涉及到的关键知识点。 首先,Spring MVC作为Spring框架的一部分...
本主题将深入探讨Hibernate的编程式事务管理和Spring AOP的声明式事务管理,以及两者如何在实际项目中集成使用。 **Hibernate编程式事务管理** Hibernate作为流行的ORM(对象关系映射)框架,提供了对JDBC事务的...
这个实例将涵盖如何创建一个简单的Spring+Hibernate项目,设置事务管理,编写带有@Transactional注解的服务类,以及对应的DAO类。同时,你还会学到如何在单元测试中验证事务处理的正确性。 通过实践这个实例,你...
在"声明式事务控制,spring2.5+hibernate3集成源码"中,开发者可以学习如何配置Spring的事务管理器,以及如何在Hibernate的SessionFactory和SessionFactoryBuilder上使用Spring的TransactionProxyFactoryBean来创建...
Spring通过其DataSource和Transaction Manager组件来管理数据库连接和事务,同时通过HibernateTemplate或SessionFactoryBean来与Hibernate进行交互,这样既保留了Spring的灵活性,又利用了Hibernate的强大持久化能力...
4. Hibernate的配置和实体类的注解,以及如何在Spring中配置SessionFactory和TransactionManager。 5. 整合Spring MVC、Spring和Hibernate,实现数据库操作的自动化。 6. 使用Spring测试框架进行单元测试和集成测试...
Spring 和 Hibernate 是两个非常重要的 Java 开发框架,它们在企业级应用开发中有着广泛的应用。Spring 是一个全面的后端应用程序框架,提供了依赖注入、面向切面编程、数据访问、事务管理等多种功能。Hibernate 则...
这个光盘源码上部分可能包含了项目初始化配置、Struts2的Action配置、Spring的bean定义以及Hibernate的实体类和映射文件。开发者可以通过学习这些代码,了解如何配置和集成这三个框架,以及如何在实际项目中编写业务...
在Spring框架中配置Hibernate事务管理是一项关键任务,它允许开发者以声明式的方式处理数据库操作的事务性,确保数据的一致性和完整性。以下是如何在Spring中配置Hibernate事务的详细步骤和概念解释。 首先,理解...