首页 文章

从应用程序获取Hibernate会话计数

提问于
浏览
1

我创建了简单的Java应用程序来学习Spring和hibernate集成 . 我已经完成了所有设置和应用程序也工作正常 .

一切正常 . 但是,我想看看当前我的应用程序使用的开放连接和关闭的休眠连接有多少会话 .

Sessionfactory 类中,我们有 "getStatistics" 方法用于检索hibernate统计数据,但这对我没有帮助 . 它也给了我零 . 请在下面找到图片 .

enter image description here

我想确保我的应用程序,使用单个会话进行整个应用程序操作 .

那么有没有办法找出或获得Spring hibernate会话计数 .

我的hibernate配置文件;

<?xml version="1.0" encoding="UTF-8"?>

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd“>

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
    <property name="username" value="rocky" />
    <property name="password" value="rocky" />
</bean>

<bean id="mySessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="myDataSource" />
    <property name="mappingResources">
        <list>
            <value>orders.hbm.xml</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <map>
            <entry>
                <key>
                    <value>hibernate.show_sql</value>
                </key>
                <value>true</value>
            </entry>
            <entry>
                <key>
                    <value>hibernate.dialect</value>
                </key>
                <value>org.hibernate.dialect.OracleDialect</value>
            </entry>
            <entry>
                <key>
                    <value>hibernate.query.factory_class</value>
                </key>
                <value>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</value>
            </entry>
            <entry>
                <key>
                    <value>connection.autocommit</value>
                </key>
                <value>true</value>
            </entry>
        </map>
    </property>
</bean>

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

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

<bean id="transactionProxy"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager" ref="txManager" />
    <property name="transactionAttributes">
        <props>
            <prop key="*">PROPAGATION_REQUIRED</prop>
        </props>
    </property>
    <property name="target" ref="myServiceClass">
    </property>
</bean>

<tx:annotation-driven transaction-manager="txManager" />

<bean id="myServiceClass" class="myServiceClass">
    <property name="sessionFactory" ref="mySessionFactory" />
</bean>

1 回答

  • 0

    查看您的代码它会断开您没有启用会话工厂的静态功能

    Step to unable session factory statics

    SessionFactory sessionFactory = getSessionFactoryForApplication();
    Statistics stats = sessionFactory.getStatistics();
    stats.setStatisticsEnabled(true);
    

    取自 article

    希望这能解决你的问题..!

相关问题