NHibernate Profiler now supports Hibernate
I have had the privilege of doing some work for Ayende for the past month to add support for Hibernate to his excellent NHibernate Profiler. What does this mean exactly? Well, Hibernate is now supported as a first class citizen in the profiler. We have tried to make sure that there is a 1:1 feature mapping between the NHibernate and Hibernate support. I am happy to report that all applicable warnings and information that you receive for NHibernate is also displayed for Hibernate. There are of course differences between NHibernate and Hibernate — such as Hibernate does not support statement level batching options, multiquery, or future queries – which is reflected in the documentation.
Since many developers use Hiberante with Spring, we have tried to make Spring integration as seamless as possible. If you are using Hibernate with Spring, configuring your application to be profiled is as simple adding a JAR and a custom attribute to your Spring configuration. Here you can see where I have added support for profiling to an Appfuse demo project:
1: <!-- Hibernate SessionFactory -->
2: <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
3: <property name="dataSource" ref="dataSource"/>
4: <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
5: <property name="hibernateProperties">
6: <value>
7: hibernate.dialect=${hibernate.dialect}
8: hibernate.query.substitutions=true 'Y', false 'N'
9: hibernate.cache.use_second_level_cache=true
10: hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
11: </value>
12: <!-- Turn batching off for better error messages under PostgreSQL -->
13: <!-- hibernate.jdbc.batch_size=0 -->
14: </property>
15: <hprof:profiler />
16: </bean>
This, of course, is just one of the many different ways that you can configure the profiler. Here is a screenshot of me profiling an Appfuse application. The top few sessions are profiling unit tests and the remaining sessions (with the URLs) are profiling the web application:
Currently, the product is in closed beta and we are looking for beta testers. If you are interested, then please contact either Ayende through his blog and he will get you all setup. Other places you can provide feedback are the user group and the feedback site. Although I may be a little biased, I think this application can add a lot of value for anyone who is using NHibernate and Hibernate.