Этот вопрос заключается в том, чтобы улучшить мое понимание управления транзакциями в сеансах весеннего спящего режима. Когда я печатаю getSessionFactory() getStatistics(), getTransactionCount(), он выводит «0», когда getSessionFactory(). GetCurrentSession(). GetTransaction(). IsActive() - это «истина». Я действительно смущен. Прошу прощения у меня.count countFactory.getStatistics(). GetTransactionCount() is 0
Ниже приводится фрагмент кода, в котором я хочу, чтобы сделка произойдет:
@Transactional(propagation=Propagation.REQUIRED)
public int insertNewRecord(){
System.out.println(getSessionFactory().getCurrentSession().getTransaction().isActive());//gives `true`
System.out.println(getSessionFactory().getCurrentSession().getStatistics()); //Gives statistics
System.out.println(getSessionFactory().getStatistics().getSessionOpenCount());// Gives 1
System.out.println(getSessionFactory().getStatistics().getTransactionCount());// Gives 0
}
Моя весна и Hibernate конфигурации:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingLocations">
<list><value>classpath:Employee.hbm.xml</value></list>
</property>
<property name="hibernateProperties">
<props>
<!-- SQL dialect -->
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<!-- Enable Hibernate's current session context -->
<!-- <prop key="hibernate.current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</prop> --><!-- org.hibernate.context.internal.ThreadLocalSessionContext -->
<!-- Disable the second-level cache -->
<prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
<!-- Echo all executed SQL to stdout -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
Ниже менеджер транзакций:
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="dataSource" ref="dataSource" />
<property name="sessionFactory" ref="sessionFactory" />
</bean>
Эй, Николос ... Спасибо за информацию. –
@ Николас. Спасибо .. для меня статистика не была включена по умолчанию. Они могут быть включены через конфигурационный файл (hibernate.generate_statistics = on) или программно sessionFactory.getStatistics(). SetStatisticsEnabled (true) – khylo
Хороший вызов. Иногда все ваши утки должны быть в ряду, чтобы что-то работать ..... :) – Nicholas