Spring 与hibernate的集成
1、把hibenate集成进来
* 将相关的包引入
* 创建实体类,映射文件和hibernate配置文件
2、把spring集成进来
* 将相关的包引入
* spring的配置文件
- 让spring来创建SessionFactory
- 需要定义一个事务管理器
- 需要指定那些方法需要进行事务管理,以及这些方法上的事务管理特性是什么
3、编写业务逻辑方法
* 继承HibernateDaoSupport类,使用HibernateTemplate这个类来持久化数据,
HibernateTemplate实际上就是session的封装
* 或者,注入sessionFactory,并使用sessionFactory.getCurrentSession()来得到session接口,
使用session来持久化数据
* 默认回滚异常:RuntimeException
* 在编写业务逻辑方法的时候,最好将异常向上抛出,直到呈现层处理
* Spring的事务管理是配添加的业务逻辑方法上面,而不要添加到DAO上
了解事务的几种传播特性
1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启
2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行
3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
6. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
7. PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务,
则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行
Spring事务的隔离级别
1. ISOLATION_DEFAULT: 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
另外四个与JDBC的隔离级别相对应
2. ISOLATION_READ_UNCOMMITTED: 这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。
这种隔离级别会产生脏读,不可重复读和幻像读。
3. ISOLATION_READ_COMMITTED: 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据
4. ISOLATION_REPEATABLE_READ: 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。
5. ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
除了防止脏读,不可重复读外,还避免了幻像读。
什么是脏数据,脏读,不可重复读,幻觉读?
脏读: 指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,
另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据, 那么另外一
个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
不可重复读: 指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。
那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据
可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。
幻觉读: 指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及
到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,
以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<!-- 配置事务特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置那些类的方法进行事务管理 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution (* com.bjsxt.usermgr.manager.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
</aop:config>
</beans>
分享到:
相关推荐
**Spring与Hibernate集成详解** 在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全方位的轻量级应用框架,提供了强大的依赖注入、AOP(面向切面编程)以及各种服务管理功能。而...
Spring与Hibernate集成声明式事务.ppt
本文将深入探讨如何将Spring与Hibernate进行集成,并重点介绍声明式事务的配置与使用。 Spring框架是一个全面的企业级应用开发框架,它提供依赖注入(DI)和面向切面编程(AOP)等功能,简化了Java应用的复杂性。另...
接下来,我们会在`applicationContext.xml`中配置数据源,这是Spring与Hibernate集成的基础。数据源(`dataSource`)通常使用Apache Commons DBCP库,因为它提供了连接池功能,能有效管理数据库连接,提高性能。配置...
本"Spring与Hibernate集成授课代码"资源旨在教授如何将这两个框架整合在一起,实现高效的数据访问和业务逻辑处理。集成Spring和Hibernate能够帮助开发者充分利用两者的优点,比如Spring的事务管理与Hibernate的数据...
**Spring与Hibernate集成** 1. **配置**: 配置Spring的`LocalSessionFactoryBean`,指定Hibernate的相关属性,如配置文件、实体类包等,生成SessionFactory。 2. **依赖注入**: 将SessionFactory注入到需要的地方...
【Struts、Spring与Hibernate集成】是Java Web开发中常见的技术组合,用于构建高效、松耦合的MVC应用程序。这三大框架的集成使得开发者能够更好地管理数据访问、业务逻辑和用户界面,提高代码的可维护性和可测试性。...
当Spring与Hibernate集成时,Spring通过其`HibernateTemplate`或`HibernateSessionManager`等类来管理和协调Hibernate的`Session`。`Session`是Hibernate的核心概念,它是与数据库交互的主要接口,用于保存、更新和...
- Spring与Hibernate集成,通常使用Spring的HibernateTemplate或HibernateDaoSupport,提供事务管理和数据访问抽象,使得代码更简洁,事务控制更方便。 - Spring与Struts2集成,Spring可以作为Struts2的Action的...
**Spring与Hibernate集成** 集成Spring和Hibernate的关键在于如何在Spring中管理Hibernate的SessionFactory和Transaction。这通常通过以下步骤实现: 1. **配置Hibernate**: 创建Hibernate的配置文件(如hibernate...
当Spring与Hibernate集成时,Spring可以负责事务的管理,而Hibernate则专注于数据持久化。 在"声明式事务控制,spring2.5+hibernate3集成源码"中,开发者可以学习如何配置Spring的事务管理器,以及如何在Hibernate...
标题中的“spring-hibernate 4个版本”指的是四个不同阶段的Spring与Hibernate集成框架的版本。Spring是一个广泛使用的Java企业级应用开发框架,而Hibernate是一个流行的持久化框架,用于简化数据库操作。这两个库的...
**Spring与Hibernate集成详解** Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力,成为了Java企业级应用开发的事实标准。而Hibernate作为一款优秀的对象关系映射(ORM)工具,极大地简化了数据库操作...
### Struts2、Spring与Hibernate集成详解 #### 一、集成背景及意义 在现代Java Web开发中,Struts2、Spring与Hibernate是三个非常重要的框架。Struts2是一个MVC框架,主要用于处理用户请求并返回相应的视图;...
将Spring与Hibernate集成,可以充分利用两者的优点,实现高效且灵活的后端数据处理。 在"spring集成hibernate所需jar包"中,通常包含以下关键的库文件: 1. **Spring Framework**:这是Spring的核心组件,包括`...
《Spring与Hibernate集成详解》 在Java开发领域,Spring框架和Hibernate ORM工具是两个非常重要的组件,它们分别处理了应用程序的依赖注入(DI)和对象关系映射(ORM)。Spring作为一个全面的轻量级框架,提供了...
**Spring与Hibernate的集成** 常见的方式是使用Spring的HibernateTemplate或SessionFactoryBean,它们可以帮助我们管理SessionFactory和Session。Spring可以控制事务边界,实现事务的统一管理,确保数据的一致性。 ...
在Webwork+Spring+Hibernate集成中,Spring通常作为整体架构的胶水,负责各组件的连接和协调。它可以管理Webwork的Action,通过依赖注入提供所需的Service和DAO。同时,Spring可以配置Hibernate SessionFactory,...
通过其强大的模块化设计,Spring能够轻松地与其他技术栈进行集成,如本案例中的Hibernate。 - **Hibernate框架**:作为一个开放源码的对象关系映射(ORM)解决方案,Hibernate提供了从Java类到数据库表的映射,以及...