`
hbxflihua
  • 浏览: 676185 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hibernate 与spring jdbcTemplate共享事物的管理

阅读更多

公司的项目框架搭建可以说是几经周折。之前的项目一直用的SSH框架,老总觉得这种架构开发效率太低了,建议把hibernate去掉或者换成是其他的持久层框架。我把原有的项目中hibernate的部分给去掉,用springjdbcTemplate来操作数据库。后来发现,这样做有些时候也是很费劲的,尤其是对大表的操作。为提高开发效率,又引入了hibernate框架。这样一来,即可以通过springjdbcTemplate直接访问数据库也可以通过hibernate来访问数据库。但这里始终有一个问题,就是事物的共享问题。SpringjdbcTemplatehibernate是分开配置的,没有统一交由一个类来进行管理,如果程序中有两者协同处理,很容易出现事物不能全部回滚的问题。这种担心一直都让我惴惴不安。

 

    有没有一种机制可以让两者共用事物达到理想中的共存呢?查阅文档发现,HibernateTransactionManager真有这种机制,不禁欣喜若狂。

    不使用spring jdbcTemplate时,applicationContext.xml的配置如下:

	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="lobHandler" ref="oracleLobHandler" />
		<property name="configLocation" value="classpath:hibernate.cfg.xml" />
	</bean>


	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

 

 

 

 

 

 

    Hibernate spring jdbcTemplate共同操作的配置如下:

 

 

 

	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
	   <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
	   <property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.0.7:1521:ORCL" />
	   <property name="user" value="hb0815" />
	   <property name="password" value="hb0815" />
	   <property name="minPoolSize" value="5" />
   	   <property name="maxPoolSize" value="10"/>   
   	   <property name="initialPoolSize" value="5"/>
	</bean>
	
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource"><ref bean="dataSource"/></property>
    </bean>
    
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="lobHandler" ref="oracleLobHandler" />
		<property name="configLocation" value="classpath:hibernate.cfg.xml" />
	</bean>

	<context:component-scan base-package="com.hzunitech" />

	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
		<property name="dataSource"><ref bean="dataSource"/></property>		
	</bean>
	

  

2
4
分享到:
评论
2 楼 TreasureNow 2013-08-10  
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
    <property name="dataSource"><ref bean="dataSource"/></property>        
</bean> 

对 spring JdbcTemplate 的事物控制在哪里体现的
<property name="sessionFactory" ref="sessionFactory" />  看起来是针对 Hibernate 的
1 楼 wxjdd03221119 2012-09-08  

相关推荐

    基于注解的Spring JdbcTemplate

    Spring JdbcTemplate提供了一个面向对象的接口,用于执行SQL查询、更新和存储过程,避免了直接与JDBC API打交道的繁琐工作。它通过异常处理、事务管理以及结果集的自动处理,简化了数据库访问。基于注解的Spring ...

    SpringJdbcTemplate封装工具类

    "更新记录.docx"文件可能是项目开发过程中对SpringJdbcTemplate封装工具类的修改日志,记录了每次更新的功能改进、bug修复或性能优化等内容,这对于版本管理和问题排查非常有帮助。 通过上述分析,我们可以看到...

    spring-jdbcTemplate实例工程

    Spring JdbcTemplate支持自动和手动的事务管理。在AOP(面向切面编程)的帮助下,可以在方法级别控制事务的开始、提交和回滚。例如,通过@Transactional注解开启事务,当发生异常时,事务会自动回滚。 五、优势与...

    Spring + Hibernate + JdbcTemplate

    在大型项目中,Spring通常与Hibernate结合使用,Spring负责整体的控制流程和依赖管理,而Hibernate则专注于数据持久化。通过Spring的Transaction Management,我们可以轻松地配置和管理数据库事务,使得在服务层的...

    Spring JDBCTemplate连接池jar包

    3. `spring-jdbc-5.0.0.RELEASE.jar`:包含Spring对JDBC的支持,包括JDBCTemplate和DataSourceTransactionManager,它们是与数据库交互和管理事务的关键。 4. `spring-tx-5.0.0.RELEASE.jar`:提供了事务管理功能,...

    Spring JdbcTemplate

    **Spring JdbcTemplate**是Spring框架中的一个核心组件,主要用于简化Java数据库访问。它提供了一种模板化的方式来执行SQL语句,使得开发人员可以避免编写大量的重复代码,专注于业务逻辑,而不是底层的数据库交互...

    Spring JdbcTemplate 常用方法整理

    Spring的JdbcTemplate是Spring框架中用于简化数据库操作的工具类,它是基于JDBC但又抽象出了一层,避免了直接与数据库驱动API交互,从而提高了代码的可读性和可维护性。本文将深入探讨Spring JdbcTemplate的常用方法...

    Druid数据库连接池的SpringJDBCTemplate所需的jar包

    Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,...

    strut2+spring+springjdbctemplate做的简易登录系统

    Spring则是一个全面的后端框架,提供依赖注入、AOP(面向切面编程)、事务管理等功能;Spring JDBC Template是Spring提供的一个简化数据库操作的工具,它封装了JDBC的繁琐部分,让开发者可以更专注于业务逻辑。 在...

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA+JdbcTemplate

    在"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA+JdbcTemplate"的DEMO中,开发者通常会创建一个Maven工程,配置相关依赖,然后分别设置Spring的配置文件(如`applicationContext.xml`)、SpringMVC的配置文件...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...

    struts2+hibernate+spring+jdbctemplate+EXT集成实例

    Struts2负责控制流程,Spring管理业务层和持久化层,Hibernate负责数据持久化,JdbcTemplate作为Spring与数据库间的桥梁,EXT则用于创建前端用户界面。这样的组合使得开发过程更为高效,各个组件之间解耦,易于维护...

    Spring JdbcTemplate查询实例

    Spring JdbcTemplate是Spring框架中用于简化数据库操作的一个重要组件,它是Spring对JDBC的轻量级封装,旨在提供一种结构良好、易于使用的SQL执行机制,同时保持了JDBC的灵活性。在本实例中,我们将深入探讨Spring ...

    模仿spring jdbcTemplate的实现

    模仿spring jdbcTemplate的粗略实现,只有很小的参考价值,如果是java初学者可以使用这个封装好的工具进行数据库操作,只需要在db.properties里配置好driver,url等信息

    Spring JdbcTemplate例子

    Spring JdbcTemplate是Spring框架中的一个核心组件,主要用来简化数据库操作。它提供了一种模板方法设计模式,将SQL语句的执行与结果处理进行了抽象,使得开发者可以更加专注于业务逻辑,而无需关心底层数据访问的...

    Spring JdbcTemplate api

    在`JdbcTemplate`的设计中,模板(Template)承担着事物控制、资源管理和异常处理的责任,而回调(Callback)则专注于实现应用程序特有的逻辑,如创建SQL语句、设置参数和处理结果集。这种分离使得开发者能够更专注...

    使用Spring JDBCTemplate进行增删改查curd操作

    通过使用JdbcTemplate,开发者可以避免编写大量的重复代码,如手动管理连接、处理结果集等,从而专注于业务逻辑。本文将深入探讨如何利用Spring JdbcTemplate进行CURD(Create、Read、Update、Delete)操作。 1. ...

    spring jdbcTemplate 源码

    Spring JDBCTemplate还提供了事务管理支持。当开启事务时,它会捕获并处理数据库异常,根据异常类型决定回滚还是提交事务。这样,开发者无需手动处理这些细节,提高了代码的可读性和可靠性。 此外,JdbcTemplate对...

    Spring JdbcTemplate.batchUpdate 例子

    总之,`Spring JdbcTemplate.batchUpdate`是处理批量数据库操作的强大工具,它可以提高效率,减少与数据库的交互次数。然而,正确地使用它需要对事务管理、异常处理和性能优化有深入的理解。通过合理的配置和良好的...

    spring的jdbcTemplate小案例

    它还支持事务管理,可以方便地与Spring的其他组件集成,如DataSource和TransactionManager。 在创建一个Spring的JdbcTemplate小案例时,我们需要完成以下几个步骤: 1. **配置DataSource**:首先,我们需要一个...

Global site tag (gtag.js) - Google Analytics