在Spring和Hibernate的配置文件中,我们可以对类中的方法进行事务控制,也就是说某个方法中含有多个数据库的写操作,我们可以通过创建一个Spring中的HibernateTransactionManager实例,把相应的sessionFactory注入到其的sessionFactory属性中,由事务声明的方式进行事务控制。样例如下:
<bean id="oaTM" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref bean="oaSessionFactory"/></property>
</bean>
但是这种方式有个局限性,如果该方法中既有调用Hibernate进行存储,也有通过JdbcTemplate进行数据库的写操作,如果在方法执行过程中,写数据发生异常时,只有纳入了事务管理的通过Hibernate进行存储的数据才会回滚,而通过JdbcTemplate方式进行操作的数据不会进行回滚。
原因是Hibernate与JdbcTemplate使用的是不同DBConnection,而且JdbcTemplate未申明相应的事务管理,所以要想在既使用了Hibernate,也使用了JdbcTemplate进行数据库存储操作的方法进行事务管理,需要在Spring的配置文件做适当的修改,样例如下:
<bean id="oaTM" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref bean="oaSessionFactory"/></property>
<property name="dataSource"><ref bean="oaDataSource"/></property>
</bean>
JdbcTemplate和Hibernate能被wrap到同一个事务里。成立需要几点条件:
1、使用同一个datasource;
2、事务交由HibernateTransactionManager管理;
3、相关dao以及service需要使用runtime exception体系,使用spring提供的exception可以,自己封装设计的runtime exception体系也行。
分享到:
相关推荐
代码层面,我们可以利用Spring的JdbcTemplate或者HibernateTemplate来简化数据库操作,它们提供了事务边界内的操作方法,避免了手动管理事务的繁琐。对于复杂的业务逻辑,Spring的DAO层和Service层设计模式可以帮助...
在Spring中,可以通过声明式或编程式事务管理来控制Hibernate的事务,进一步提高了开发效率。 【整合Spring和Hibernate】 将Spring与Hibernate整合,可以充分利用两者的优势。Spring可以通过Bean配置管理Hibernate ...
`OpenSessionInView`模式是一种处理Web应用中事务管理的策略,它在HTTP请求开始时开启一个Hibernate Session,在请求结束时关闭Session。这样,整个请求周期内,所有DAO层的操作都可以共享同一个Session,避免了频繁...
最后,Hibernate的SessionFactory可以在Spring配置中创建并共享,使得在整个应用中都能高效地进行数据库交互。 在实际开发中,通常会使用Spring的HibernateTemplate或JdbcTemplate来进一步简化数据访问层的编写。...
- **事务管理**:提供了声明式事务管理的支持,简化了事务处理的复杂度。 - **数据访问/集成**:Spring提供了多种数据访问框架,如JdbcTemplate、HibernateTemplate等,简化了数据访问层的开发。 #### 四、...
Spring的AOP功能常用于事务管理,通过定义切面(Aspect),可以在多个方法间共享事务逻辑,避免重复代码。 10. **Spring Boot集成** 如果使用Spring Boot,数据库连接配置变得更加简洁。Spring Boot自动配置了...
Spring04.ppt则可能涵盖了Spring与数据库的交互,如JDBC模板、Hibernate和MyBatis的整合。Spring Data Access/Integration模块提供了多种数据访问技术的抽象,包括JdbcTemplate、SimpleJdbcInsert、...
- **文档共享**:使用Hibernate的多对多映射功能,可以轻松实现文档与用户的关联,便于文档的上传、下载和权限控制。 这个项目对于学习JavaWeb的开发者来说,是一份宝贵的资源。它展示了SSH框架如何协同工作,如何...
此外,Spring与Hibernate的整合使得数据访问更加方便,例如通过HibernateTemplate或JdbcTemplate进行数据库操作。 结合描述中的“一个简单的网络硬盘系统”,我们可以推测项目可能包含以下功能: 1. 用户注册与登录...
线程安全的数据访问、数据库连接的共享以及锁的管理都需要遵循Java并发编程的最佳实践,以避免竞态条件和死锁等问题。 在Efs Source Java这个子目录中,可能包含了Java数据库应用的相关源码,这将有助于开发者深入...
这个版本在Java企业级应用开发中提供了丰富的特性和改进,尤其在依赖注入(IOC)、面向切面编程(AOP)以及与流行框架如Hibernate和Struts2的集成方面。以下是对这些知识点的详细说明: 1. **依赖注入(IOC,...
Spring的DAO支持是其核心模块之一,用于简化数据访问层(DAO)的开发,通过将固定的数据访问...它不仅提供了对JDBC的简化封装,还可以与其他数据访问框架(如Hibernate、MyBatis)集成,形成强大的数据访问解决方案。
f) Spring支持声明式事务管理,工作调度,以及与其他框架(如Hibernate、MyBatis等)的集成,提供了一个全面的开发环境。 g) Spring的Bean可以通过Terracotta在不同JVM之间共享,实现高可用和集群化,同时Spring ...
- **SpringHibernateWorkflowStore**:结合Spring和Hibernate,提供更高级的事务管理和性能优化。 - **JDBCTemplateWorkflowStore**:利用Spring的JdbcTemplate简化JDBC操作。 - **HibernateWorkflowStore**:直接...
7. **数据访问**:Spring 支持 JdbcTemplate、JPA、Hibernate 等多种数据访问技术,简化了与数据库的交互。在 `org.springframework.jdbc` 和 `org.springframework.orm` 包中,可以找到相关的支持类。 8. **Web 层...
- **事务管理**:Spring提供了声明式的事务管理功能,使得事务管理更加简单易用。 ### 二、Spring的核心容器 #### 2.1 BeanFactory与ApplicationContext - **BeanFactory**:是最基本的Spring IoC容器,它负责创建...
10. ** Derby与其他技术的集成**:如Spring框架中的JdbcTemplate和Hibernate ORM,以及如何在Eclipse或IntelliJ IDEA等IDE中配置Derby数据库,便于开发和调试。 11. **故障排查**:学习如何处理常见的错误和异常,...
- Spring支持两种类型的事务管理:编程式事务管理和声明式事务管理。编程式事务管理通过显式地编程来管理事务边界;而声明式事务管理则通过配置元数据来自动管理事务边界。 8. **@Autowired的工作原理** - `@...
- 使用代理技术实现声明性事务管理,简化了事务控制代码。 - 通过配置文件定义事务规则。 - 业务逻辑代码实现事务逻辑。 - 客户端代码`Test.java`用于测试事务功能。 通过以上总结,我们可以看出JTangEJB程序员...
- 介绍如何将Spring JDBC与应用程序集成,包括连接池配置、事务管理等方面的最佳实践。 ### 四、Spring对ORM的支持 #### 1. 集成Hibernate - Spring支持多种ORM框架,其中最常用的是Hibernate。Spring为Hibernate...