gpt4 book ai didi

java - 如何在不使用@transactional注解的情况下进行事务管理

转载 作者:行者123 更新时间:2023-11-30 06:41:45 35 4
gpt4 key购买 nike

我的 xml 中有一个事务管理器 bean,如下所示:

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

session 工厂和数据源 bean 为:

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="URL" value="jdbc:oracle:thin:@localhost:1521:XE"/>
<property name="user" value="user"/>
<property name="password" value="password"/>
</bean>

<!-- Hibernate SessionFactory -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

session 工厂具有所有 hbm 文件映射。

现在我有一个 UserAddressManagerImpl 如下:

public class UserAddressManagerImpl implements UserAddressManager{
// methods to read and write in the database
}

这个 bean 是:

<bean id="userAddressManager"   class="com.sodiz.service.impl.UserAddressManagerImpl">  

现在,这个UserAddressManagerImpl 上没有@Transactional

每当我从此类进行任何读取操作时,它都可以正常工作,但在进行写入操作时,它会失败。

我正在使用打包在 jar 中的此类。所以我不想改变这个类。

那么,有没有办法在不使用@Transactional注解的情况下执行读写操作呢?

最佳答案

您必须使用方面来实现此目的,而不使用注释:

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

<bean id="userAddressManager" class="com.sodiz.service.impl.UserAddressManagerImpl"/>

<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut id="userAddressManagerOperation"
expression="execution(* com.sodiz.service.impl.UserAddressManagerImpl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="userAddressManagerOperation"/>
</aop:config>

当然,您可以使用更多通配符,以便包中的每项服务都适用于上述事务设置。

关于java - 如何在不使用@transactional注解的情况下进行事务管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44283533/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com