我的项目中有一些代码,所以如果使用@Transactional
而不是@CoreTransactional
有什么不同?
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional(transactionManager = "jpaTransactionManager")
public @interface CoreTransactional {
}
And this is config.xml
<!-- Transaction manager -->
<bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="emfOracle"/>
</bean>
<!-- Entity manager -->
<bean id="emfOracle" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" primary="true">
<property name="dataSource" ref="dataSourceOracle" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="packagesToScan">
<array>
<value>com.heb.pm</value>
<value>com.heb.util.jpa</value>
</array>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle10gDialect
</prop>
<prop key="hibernate.max_fetch_depth">3</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">10</prop>
<prop key="hibernate.show_sql">${jpa.showSql}</prop>
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
<prop key="hibernate.default_schema">${jpa.schema.oracle}</prop>
<prop key="hibernate.enable_lazy_load_no_trans">true</prop>
</props>
</property>
</bean>
答案 0 :(得分:0)
@Transactional
是Spring事务的注释。
@CoreTransactional
是使用@Transactional
并使用jpaTransactionManger进行注释的自定义注释。
我假设jpaTransactionManger也是自定义配置的,因此如果要使用此jpaTransactionManager,则必须使用@CoreTransactional