`
gary0416
  • 浏览: 334802 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用Spring AOP记录Hibernate统计信息

阅读更多

在Hibernate的属性里设置hibernate.generate_statistics为true.

<prop key="hibernate.generate_statistics">true</prop>
 

编写切面类PerformanceInfo.java

org.hibernate.stat.Statistics包含统计信息,如二级缓存等.根据需要记录相应内容.

 

package ssh.core;

import javax.servlet.ServletContext;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.hibernate.SessionFactory;
import org.hibernate.stat.Statistics;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class PerformanceInfo {
	
	Logger log = Logger.getLogger(this.getClass());
	
	public void printInfo(){
		SessionFactory sf = (SessionFactory) getBean("sessionFactory");
		printHibernateStatistics(sf.getStatistics());
	}
	
	private void printHibernateStatistics(Statistics statistics){
		log.debug(statistics);
	}
	
	public static Object getBean(String beanName){
		ServletContext servletContext = ServletActionContext.getServletContext();
		ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
		return ctx.getBean(beanName);
	}
}
 

 

配置Spring AOP

 

修改applicationContext.xml

加入切面类

<bean id="performanceInfo" class="ssh.core.PerformanceInfo"/>

 AOP,根据需要修改execution以及切面类的method

	<aop:config>
		<aop:aspect id="performance" ref="performanceInfo">
			<aop:pointcut id="allDAO" expression="execution(* ssh.dao.*.*.*(..))"/>
			<aop:after method="printInfo" pointcut-ref="allDAO"/>
		</aop:aspect>
	</aop:config>

 

日志记录Log4j配置详见 http://gary0416.iteye.com/blog/857139

 

部分运行结果

2011-03-19 07:50:50 DEBUG [ssh.core.PerformanceInfo.printHibernateStatistics(PerformanceInfo.java:35)] - Statistics[start time=1300492114615,sessions opened=7,sessions closed=6,transactions=10,successful transactions=5,optimistic lock failures=0,flushes=1,connections obtained=6,statements prepared=7,statements closed=7,second level cache puts=21,second level cache hits=2,second level cache misses=0,entities loaded=21,entities updated=1,entities inserted=0,entities deleted=0,entities fetched=0,collections loaded=0,collections updated=0,collections removed=0,collections recreated=0,collections fetched=0,queries executed to database=6,query cache puts=0,query cache hits=0,query cache misses=0,max query time=297]

3
4
分享到:
评论

相关推荐

    SpringAOP整合Hibernate并使用事务(模拟买书的过程)

    在本示例中,我们将探讨如何整合Spring AOP(面向切面编程)与Hibernate ORM框架,并利用它们来实现事务管理,模拟一个简单的买书过程。这个过程将涉及到数据库操作,事务的开始、提交和回滚,以及AOP在处理事务中的...

    软件依赖包(Spring AOP+Hibernate Transaction)

    本资源提供的"软件依赖包(Spring AOP+Hibernate Transaction)"正是这样一种集合,它包含了Spring AOP和Hibernate Transaction管理的jar文件,使得开发者能够便捷地在Java应用中实现面向切面的编程(AOP)以及事务...

    SpringAOP整合Hibernate并使用事务

    在IT行业中,Spring框架是Java企业...通过以上步骤,你可以成功地在Spring框架中整合Hibernate,并利用AOP进行事务管理,实现高效、稳定的Java企业级应用开发。在实际开发中,还需要根据项目需求进行适当的调整和优化。

    Spring AOP管理Hibernate事务(TransactionInSpringAOP)

    在Spring框架中,AOP(面向切面编程)被广泛用于事务管理,特别是与ORM(对象关系映射)框架如Hibernate结合使用时。本篇文章将深入探讨如何在Spring AOP中实现Hibernate事务管理,以及这一过程中的关键概念和技术...

    SpringMVC+springAOP+spring security+Hibernate整合实例代码

    Spring MVC、Spring AOP、Spring Security和Hibernate是Java开发中常用的四大框架,它们各自负责不同的领域,但在实际项目中往往需要进行整合以实现更高效、更安全的开发。本实例代码提供了一个完整的整合示例,涵盖...

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

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

    Spring通过AOP实现Hibernate自动事务.rar

    本教程将详细介绍如何在Spring框架中利用AOP实现对Hibernate的自动事务管理,以便于提升开发效率和代码的可维护性。 首先,理解Spring AOP的核心概念。AOP允许程序员定义"切面",这些切面可以包含业务逻辑的各个...

    Spring+hibernate+junit+aop_ jar包

    标题中的"Spring+Hibernate+junit+aop"是一个经典的Java企业级开发组合,这些技术都是Java后端开发中的重要组成部分。让我们逐一深入理解这些知识点: 1. **Spring**:Spring 是一个开源的应用框架,核心功能包括...

    struts2+spring2.5+hibernate3基础包(包括AOP)

    综上所述,这个基础包提供了开发SSH整合项目的基础环境,开发者可以根据具体的业务需求,编写Action、Service、DAO层的代码,并利用Spring的AOP进行事务管理,从而构建出高效的企业级应用。同时,由于SSH的广泛使用...

    Spring Persistence with Hibernate

    Spring框架是一个全面的后端开发框架,而Hibernate则是一个流行的对象关系映射(ORM)工具,它简化了数据库操作,将Java对象直接映射到数据库记录。两者结合,可以实现高效、灵活的数据管理。 Spring框架提供了多种...

    struts1.2 + spring2.5 + hibernate3.2框架demo

    同时,Spring的AOP模块支持切面编程,可以实现事务管理、日志记录等功能。在Struts1.2和Hibernate3.2集成中,Spring可以作为它们之间的粘合剂,比如管理Action的生命周期,提供数据访问的事务控制。 再来看...

    spring-aop AND proxy

    “工具”标签可能暗示这篇博客还介绍了与Spring AOP相关的辅助工具或实践技巧,例如如何利用AspectJ编译时或运行时 weaving,或者使用Spring AOP与其他工具(如Log4j、Hibernate)集成的方法。 综上所述,Spring ...

    spring4+hibernate4整合例子

    在Spring4中整合Hibernate4,可以利用Spring的Transaction Management来处理事务,无需在代码中显式调用事务开始和提交。 在这个整合例子中,你需要配置Spring的ApplicationContext,定义数据源、SessionFactory...

    Spring之Spring2.5集成Hibernate3.6

    6. **AOP整合**:Spring的AOP支持可以方便地实现日志记录、性能监控、权限控制等功能,而无需侵入业务代码。 在实际集成过程中,开发者需要配置Spring的Hibernate模板或JPA支持,创建SessionFactory或...

    Spring4.0+Hibernate4.0+Struts2.3整合案例

    Spring4.0+Hibernate4.0+Struts2.3整合案例:实现增删改查。 ===================== application.xml: xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    spring4.2+hibernate5环境开发全部jar包

    开发者可以利用Spring的DI和AOP来管理对象的生命周期,使用Spring MVC构建Web层,通过Hibernate进行数据持久化操作。同时,两者都支持大量的社区插件和扩展,如MyBatis、Thymeleaf等,进一步丰富了开发工具和功能...

    hibernate-aop

    在将AOP与Hibernate结合使用时,我们通常会利用Spring AOP框架,因为Spring不仅支持AOP,还提供了对Hibernate的良好集成。Spring AOP允许我们在方法执行前后插入自定义的行为,如记录日志、进行事务控制等,而无需在...

    Spring与Hibernate集成

    总的来说,Spring与Hibernate的集成能够充分利用各自的优势,使得Java应用的开发更加便捷。通过Spring对Hibernate的管理,我们可以更好地控制事务、实现解耦,同时降低出错的可能性。此外,Spring的AOP支持使得事务...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...

Global site tag (gtag.js) - Google Analytics