`
as619864232
  • 浏览: 327499 次
社区版块
存档分类
最新评论

在 Spring 中自己管理 Hibernate 事务

阅读更多

在spring中自己控制事物,并且使用 aop 拦截事务,如果需要使用得到当前session,则需要在 hibernate 的 xml 配置文件中添加属性:

hibernate 版本若为 3.x.x

hibernate.current_thread_class=org.hibernate.context.ThreadLocalSessionContext|thread

hibernate 版本若为 4.x.x

hibernate.current_thread_class=org.hibernate.context.interl.ThreadLocalSessionContext|thread

 

aop 的配置:

 

<bean id="muser_inter" class="org.aops.MuserAdvice">
	<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<aop:config>
	<aop:pointcut expression="execution(* org.services.impl.MuserServiceImpl.login(String, String))" id="login_pointCut" />
	<aop:advisor advice-ref="muser_inter" pointcut-ref="login_pointCut" />
</aop:config>

Java 代码:

 

package org.aops;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.hibernate.SessionFactory;

public class MuserAdvice implements MethodInterceptor {

	private SessionFactory sessionFactory;

	@Override
	public Object invoke(MethodInvocation arg0) throws Throwable {
		System.out.println("in");
		sessionFactory.getCurrentSession().beginTransaction();
		Object obj = arg0.proceed();
		System.out.println("out");
		sessionFactory.getCurrentSession().getTransaction().commit();
		return obj;
	}

	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

}

 

控制台输出:

 

in

Hibernate: 

    select

        muser0_.MUID as MUID1_,

        muser0_.MUNAME as MUNAME1_,

        muser0_.MUPWD as MUPWD1_ 

    from

        TEST.MUSER muser0_ 

    where

        muser0_.MUNAME=? 

        and muser0_.MUPWD=?

out

分享到:
评论

相关推荐

    在Spring中配置Hibernate事务

    在Spring框架中集成和配置Hibernate事务管理是企业级Java应用中的常见实践,它能提供高效且灵活的事务处理策略。Spring作为一款强大的依赖注入(DI)和面向切面编程(AOP)容器,能够轻松地管理和协调不同数据访问...

    spring hibernate 事务管理学习笔记(一)

    通过声明式事务管理,我们只需在方法上添加`@Transactional`注解,即可声明该方法在一个事务中执行。 接下来,我们将深入讨论Spring中的声明式事务管理。在Spring配置文件中,我们需要开启事务管理器,并在需要事务...

    Spring Hibernate事务实例

    在上面的例子中,`saveUser`方法会在一个事务中执行,如果发生异常,整个事务会被回滚,确保数据的一致性。 总结一下,`Spring Hibernate事务实例`涵盖了以下核心知识点: 1. Spring框架的声明式事务管理:通过`...

    spring mvc+hibernate实现事务管理(配置文件版)

    总结,本项目展示了如何在Spring MVC和Hibernate环境中实现事务管理,通过MyEclipse自动生成的包和配置文件,简化了开发流程。在实际应用中,这样的整合能够提供高效且易于维护的Web应用,同时,声明式事务管理极大...

    spring hibernate 事务管理学习笔记(二)

    在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...

    Spring Hibernate 事务处理 详细说明

    3. **Hibernate事务配置:**在Spring中,需要配置Hibernate SessionFactory,并将其注入到需要进行数据库操作的服务中。同时,通过`PlatformTransactionManager`接口(如HibernateTransactionManager)配置事务管理...

    spring整合hibernate实现事务处理

    在`Spring_1800_Spring_Hibernate_Transaction_Annotation`这个压缩包文件中,很可能包含了使用注解方式实现Spring整合Hibernate事务处理的相关示例代码和配置文件。通过阅读和理解这些代码,你可以更好地掌握这一...

    spring mvc+hibernate 实现事务管理(全注解版)

    2. **Hibernate事务**: Hibernate本身也提供了一种事务管理机制,但在Spring环境中,我们通常使用Spring的事务管理器来协调。当@Transactional注解应用于方法上,Spring会在该方法执行前后自动管理事务的开始和结束...

    图书管理系统spring+struts+hibernate

    在本系统中,Spring作为“胶水”连接各个组件,如控制层的Struts和持久层的Hibernate,使得系统模块化,易于维护和扩展。此外,Spring还提供事务管理,确保数据操作的一致性。 Struts是Java Web应用的一个MVC框架,...

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    本篇文章将重点讨论如何在Spring框架中集成Hibernate,并探讨编程式事务管理和Spring AOP的声明式事务。 首先,让我们理解Spring与Hibernate的集成。为了整合这两个库,你需要在Spring配置文件中定义Hibernate的...

    Spring+Hibernate注解事务实例

    - 在DAO层,使用Hibernate的Session和Query对象进行数据库操作,Spring会在事务的上下文中管理这些操作。 4. **测试**: - 编写测试用例,模拟正常情况和异常情况,确保事务管理能够正确地进行提交和回滚。 这个...

    spring hibernate,spring jdbc事务管理

    两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...

    Spring AOP管理Hibernate事务(TransactionInSpringAOP)

    本篇文章将深入探讨如何在Spring AOP中实现Hibernate事务管理,以及这一过程中的关键概念和技术细节。 首先,让我们了解什么是Spring AOP。AOP是一种编程范式,它允许程序员定义“切面”,这些切面是跨越多个对象的...

    声明式事务控制spring+hibernate集成

    在"声明式事务控制,spring2.5+hibernate3集成源码"中,开发者可以学习如何配置Spring的事务管理器,以及如何在Hibernate的SessionFactory和SessionFactoryBuilder上使用Spring的TransactionProxyFactoryBean来创建...

    spring3,hibernate4 配置声明式事务管理(annotation方式)

    本篇将详细介绍如何在Spring 3和Hibernate 4中通过注解来实现声明式事务管理。 首先,我们需要在项目中引入Spring和Hibernate的依赖库。这通常通过Maven或Gradle等构建工具完成,确保添加了相应的依赖项。 接着,...

    spring,struts,hibernate,事务

    事务在Hibernate中也很重要,因为多个数据库操作可能需要在一个事务中完成,以确保数据的一致性。Hibernate支持JDBC事务和JTA(Java Transaction API)事务,可以与Spring的事务管理机制集成,实现统一的事务策略。 ...

    spring,hibernate整合实现事务管理(MethodInterceptor)

    声明式事务管理则是通过配置来定义哪些方法需要在事务中执行,更加简洁和易于管理。 1. **Spring事务管理基础**: - Spring事务管理的核心接口包括`PlatformTransactionManager`和`TransactionDefinition`。前者...

    spring 结合druid和hibernate使用jta配置分布式事务

    7. **测试验证**:编写测试用例,检查在分布式事务中的正常操作和异常情况,确保事务管理的正确性。 以上就是Spring结合Druid和Hibernate,使用Atomikos实现JTA配置分布式事务的基本流程。在实际应用中,还需要考虑...

    spring hibernate mysql 事务实例

    Hibernate作为持久层框架,它自身也提供了事务管理,但通常在Spring环境下,我们会让Spring接管事务,以便在整个应用中保持一致的事务策略。Spring通过JDBC的DataSourceTransactionManager或Hibernate的...

Global site tag (gtag.js) - Google Analytics