Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring中@Transactional在ProxyFactoryBean上的性能_Java_Spring_Transactions - Fatal编程技术网

Java Spring中@Transactional在ProxyFactoryBean上的性能

Java Spring中@Transactional在ProxyFactoryBean上的性能,java,spring,transactions,Java,Spring,Transactions,在我的应用程序中,我最初使用ProxyFactoryBean将事务应用于我的DAOBean,如下所示: <bean id="buyProductDAO" class="com.trading.persistence.impl.jdbc.BuyProductDAOImpl" scope="prototype"> <property name="jdbcTemplate"> <ref bean="jdbcTemplate"/> &l

在我的应用程序中,我最初使用ProxyFactoryBean将事务应用于我的DAOBean,如下所示:

<bean id="buyProductDAO" class="com.trading.persistence.impl.jdbc.BuyProductDAOImpl" scope="prototype">
    <property name="jdbcTemplate">
        <ref bean="jdbcTemplate"/>
    </property>
</bean>

<bean id="buyProductDAOProxy" class="org.springframework.aop.framework.ProxyFactoryBean" scope="singleton">
    <property name="proxyInterfaces">
        <value>com.trading.persistence.impl.jdbc.BuyProductDAO</value>
    </property>
    <property name="interceptorNames">
        <list>
            <value>transactionInterceptor</value>
            <value>buyProductDAO</value>
        </list>
    </property>
</bean>

com.trading.persistence.impl.jdbc.BuyProductDAO
交易接收器
买产品刀
在这种情况下,如果我从代码中发现代理bean,它将返回事务bean。此外,目前,事务应用于类级别


我想重构我的代码以使用@Transactionl。转换后会对性能产生什么影响?我计划在方法级别应用事务,与当前实现的类级别相反。

在Spring中直接使用
ProxyFactoryBean
作为声明性事务管理的一种方式是一种非常古老的样式,不再需要了

:

TransactionProxyFactoryBean在哪里?

Spring 2.0和2.0版本中的声明性事务配置 以上内容与以前版本的Spring有很大不同。主要 不同之处在于不再需要配置 TransactionProxyFactoryBean

Spring 2.0之前的配置样式仍然100%有效 配置把新事物看作是简单的定义 TransactionProxyFactoryBean代表您


看起来你已经开始喜欢(这几乎是现在的标准),所以没有理由不完全接受
@Transactional
划分风格。

首先,我没有看到在你的bean定义中设置targetObject(代理需要一个目标)

在您当前的配置中,所有方法都将得到建议-事务将应用于DAO类中的所有方法,类似于在类级别应用@Transactional

当您将重构代码以在特定方法上使用@Transactional时,只建议使用这些方法


这是唯一的区别。

谢谢你的回复。更改对性能有何影响?正如Spring文档所说,现有的Spring工具正在代表您初始化TransactionProxyFactoryBeans。所以在这个区域,如果不在标准杆上,这是可以忽略不计的。性能方面的考虑主要来自以下方面:1)底层持久性选择(SpringJDBC/orm/hibernate)的非最佳使用,2)DB连接池的非使用,3)低效的批处理操作等