Как использовать @Transactional весной - PullRequest
0 голосов
/ 22 марта 2020

У меня есть несколько кодов в моем проекте, так что же отличается, если использовать @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>

1 Ответ

0 голосов
/ 22 марта 2020

@Transactional - это аннотация из транзакции Spring.

И @CoreTransactional - это пользовательская аннотация, аннотированная @Transactional и использующая jpaTransactionManger.

Я предполагаю, что jpaTransactionManger также является пользовательским настроен так, что вы должны использовать @CoreTransactional, если вы хотите использовать этот jpaTransactionManager

...