我有一个简单的简单java应用程序,它使用spring 2.5.5和hiberate 3.3.1.GA.换句话说,它不是在像tomcat或jboss这样的任何容器中运行。
我想通过使用注释@Tranactional在应用程序中启用事务控制。然而,经过多次试用,申请并没有像我预期的那样开始任何交易。 (在服务器端检查sybase 12.5,使用sp_transactions
)
我已经阅读了doco几次,希望我没有错过任何内容。
我将<tx:annotation-driven transaction-manager="txManager" />
添加到包含需要参与事务的bean的应用程序上下文xml文件中。
任何人都可以建议
1)如何转换spring logging以了解spring框架如何发现和检测@Transactional java类?
2)我使用org.springframework.orm.hibernate3.HibernateTransactionManager
作为事务管理器。这是对的吗?
3)我是否需要添加任何jar来启用此支持?
以下是相关applicationContext.xml
的部分列表<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
default-lazy-init="false">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.sybase.jdbc3.jdbc.SybDriver</value>
</property>
<property name="url">
<value>${jdbc.connection.url}</value>
</property>
<property name="username">
<value>${jdbc.user}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="maxWait">
<value>30000</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration
</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SybaseDialect
</prop>
<prop key="hibernate.jdbc.batch_size">
50
</prop>
<prop key="show_sql">true</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
<prop key="hibernate.cache.provider_configuration_file_resource_path">
ehcache.xml
</prop>
<prop key="hibernate.cache.use_query_cache">
true
</prop>
<prop key="hibernate.cache.use_second_level_cache">
true
</prop>
</props>
</property>
</bean>
<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
修改
如果它是相关的(Spring @Transactional concurrency),我自由地使用@Transactional
答案 0 :(得分:1)