`
dzgwt2004
  • 浏览: 167465 次
  • 来自: 浙江杭州
社区版块
存档分类
最新评论

HibernateInterceptor到底起到甚么作用?

阅读更多
<bean id="classDao" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="proxyInterfaces">
      <value>limq.hibernate.dao.IClasses</value>
    </property>
    <property name="interceptorNames">
      <list>
        <value>hibernateInterceptor</value>
        <value>classDaoTarget</value>
      </list>
    </property>
  </bean>


这里好像是代理一个接口,但是为什么要制定拦截器呢?

<bean id="classDao" class="org.springframework.aop.framework.ProxyFactoryBean">
	    <property name="proxyInterfaces">
	      <value>limq.hibernate.dao.IClasses</value>
	    </property>
	    
	    <property name="target">
	    	<ref bean="classDaoTarget"/>
	    </property>
  	</bean>


这样代理一个接口不就可以了么? 为什么要写成上面的样子? 不解。
分享到:
评论
1 楼 dzgwt2004 2006-12-30  
源码:
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
		boolean existingTransaction = false;
		Session session = SessionFactoryUtils.getSession(
				getSessionFactory(), getEntityInterceptor(), getJdbcExceptionTranslator());
		if (TransactionSynchronizationManager.hasResource(getSessionFactory())) {
			logger.debug("Found thread-bound Session for Hibernate interceptor");
			existingTransaction = true;
		}
		else {
			logger.debug("Using new Session for Hibernate interceptor");
			if (getFlushMode() == FLUSH_NEVER) {
				session.setFlushMode(FlushMode.NEVER);
			}
			TransactionSynchronizationManager.bindResource(getSessionFactory(), new SessionHolder(session));
		}
		try {
			enableFilters(session);
			Object retVal = methodInvocation.proceed();
			flushIfNecessary(session, existingTransaction);
			return retVal;
		}
		catch (HibernateException ex) {
			throw convertHibernateAccessException(ex);
		}
		finally {
			disableFilters(session);
			if (existingTransaction) {
				logger.debug("Not closing pre-bound Hibernate Session after interceptor");
			}
			else {
				TransactionSynchronizationManager.unbindResource(getSessionFactory());
				SessionFactoryUtils.releaseSession(session, getSessionFactory());
			}
		}
	}

相关推荐

    struts2、spring、hibernate面试题集

    在IT行业中,尤其是在Java Web开发领域,Spring、Hibernate和Struts2是三大核心框架,它们在构建企业级应用中起着至关重要的作用。这三者合称为SSH(Spring、Struts2、Hibernate),是Java EE开发的经典组合。下面将...

    Struts+Hibernate

    Struts和Hibernate是Java开发中两个非常重要的框架,它们在构建Web应用程序时起着关键作用。Struts是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于控制应用程序的流程,而Hibernate则是一个...

    struts spring hibernate组合的留言板程序

    首先,Struts框架在留言板程序中起到了前端控制器的作用。它接收用户的HTTP请求,根据配置的Action映射将请求分发到相应的业务逻辑组件上执行,并将结果返回给视图层进行展示。Struts2的核心组件包括Action、Result...

    Struts2+hibernate 源码

    Struts2和Hibernate是两种非常重要的Java开源框架,它们在Web应用开发中起着至关重要的作用。Struts2是一个强大的MVC(Model-View-Controller)框架,它为构建基于J2EE的Web应用程序提供了全面的架构支持。而...

    struts2 hibernate实现的项目

    Struts2和Hibernate是Java开发领域中非常重要的两个框架,它们在J2EE应用程序开发中起着关键作用。Struts2作为MVC(Model-View-Controller)框架,主要用于处理前端请求并控制业务流程,而Hibernate则是一个持久层...

    Struts2+Hibernate实现新闻发布系统

    Struts2和Hibernate是两种非常重要的Java Web开发框架,它们在构建新闻发布系统中起到了关键作用。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责控制应用程序的流程,而Hibernate则是一个对象关系...

    struts2+hibernate3.3图书管理系统

    Struts2和Hibernate是Java开发领域中非常重要的两个框架,它们在构建Web应用程序时起着核心作用。Struts2是一个MVC(Model-View-Controller)框架,它为Java EE平台提供了一种处理用户交互、业务逻辑和视图分离开来...

    struts_hibernate_bbs.rar_bbs_hibernate b_hibernate bbs_struts hi

    Struts和Hibernate是Java开发中两个非常重要的框架,它们在构建Web应用程序,特别是大型的、数据驱动的BBS(Bulletin Board System,论坛)系统时,起到了核心作用。本压缩包"struts_hibernate_bbs.rar"包含了一个...

    struts+hibernate一对多的管理系统

    Struts和Hibernate是Java开发领域中的两个重要框架,它们在构建企业级Web应用程序时起着核心作用。Struts是MVC(Model-View-Controller)架构模式的一个实现,主要用于处理前端请求和控制业务流程;而Hibernate则是...

    基于struts2 spring hibernate 开发的bbs论坛

    Spring框架则在业务层起到了关键作用,它是一个全面的后端解决方案,包含了依赖注入(DI)、面向切面编程(AOP)、数据访问/集成(DAO)等模块。在本项目中,Spring管理了Bean的生命周期和依赖关系,使得各组件之间...

    springMVC+hibernate+json框架整套jar包,亲测

    这些 jar 包和配置文件组合在一起,可以搭建起一个完整的基于 Spring MVC 和 Hibernate 的 Web 应用,支持 JSON 数据交换,适用于开发高效、可维护的 Java Web 项目。在实际应用中,还需要对这些技术进行深入理解和...

    Struts2+Hibernate+spring_企业管理系统有完整数据库备份

    Struts2、Hibernate和Spring是Java企业级开发中常用的三大框架,它们的组合被称为SSH(Struts2-Spring-Hibernate)框架。这个“Struts2+Hibernate+Spring_企业管理系统有完整数据库备份”项目,提供了基于SSH框架的...

    struts2与hibernate整合单表增删改查(超完整)

    首先,需要在Struts2的配置文件中引入Hibernate的相关拦截器,如`hibernate-interceptor`,这样Action就可以访问到SessionFactory。然后,在Action中注入Session,通过Session进行CRUD操作。 **4. 用户注册** 用户...

    Hibernate学习笔记

    6. Hibernate接口分类:主要包括用于数据库操作的Session、Transaction和Query接口,配置Hibernate的Configuration接口,事件监听接口如Interceptor,以及扩展Hibernate功能的UserType等接口。 7. 技术集成:...

    Struts2 spring Hibernate 案例

    而“工具”标签可能指的是使用了一些辅助工具,如IDE、构建工具(如Maven或Gradle)、版本控制系统(如Git)等,这些工具在开发过程中起到了重要作用,帮助管理和构建项目。 在压缩包的文件列表中,“btw”可能是...

    JavaWeb-Hibernate-Struts2-Spring2

    - **Hibernate中文教程.chm**:这个教程可能涵盖了Hibernate的基础到高级用法,如实体类映射、会话管理、事务处理和查询优化。 - **css盒子模型.jpg**:CSS盒子模型是布局的关键,该图片可能展示了盒子模型的工作...

    STRUTS+Hibernate小登陆

    Struts和Hibernate是Java开发中两个非常重要的框架,它们在构建Web应用程序时起着关键作用。Struts是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于控制应用程序的流程,处理用户请求并返回响应...

    Struts—hibernate

    Struts和Hibernate是Java Web开发中的两个重要框架,它们在构建动态网站和企业级应用程序时起着关键作用。Struts是MVC(Model-View-Controller)架构的一个实现,主要负责控制应用程序的流程,而Hibernate则是一个...

    Struts+hibernate

    Struts和Hibernate是Java开发中两个非常重要的框架,它们在构建企业级Web应用程序时起着核心作用。Struts是MVC(模型-视图-控制器)设计模式的一个实现,主要用于处理用户请求和控制应用程序流程,而Hibernate则是一...

Global site tag (gtag.js) - Google Analytics