[英]Java and Spring implement transactional function
我正在使用Java 1.6和Spring 3.0.4,我想實現一個Java功能
如果在任何此步驟中出現錯誤,我都希望回滾整個事務並返回到先前的狀態。
我已經意識到了所有這些代碼,我只想將它們放在一起。 如何使用與@Entity
和@Column
批注一起使用的現有spring值來管理此問題?
謝謝!
簡短的答案:使用Spring時,最簡單的方法是使用事務管理 ,創建一個代表該事務單元的服務,並使用@Transactional
對該方法進行注釋
實際上,您需要在應用程序中配置PlatformTransactionManager
。 當您似乎使用JPA時, JpaTransationManager
似乎是一個顯而易見的選擇。 要啟用@Transactional
批注的處理,可以使用@EnableTransactionManagement
或<tx:annotation-driven/>
命名空間。 兩者都在@EnableTransactionManagement
的Javadoc中進行了@EnableTransactionManagement
默認情況下,從該帶注釋的方法引發的運行時異常將管理事務回滾。 如果您的代碼正在使用檢查的異常,則必須配置注釋的rollbackFor
屬性。
文檔中有更多詳細信息和示例
對於需要相同配置的人們,您可以在這里找到我如何解決此問題,將Hibernate與Spring集成在一起。
<!-- session factory activate the transaction modules for the specified classes -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="configLocation" value="classpath:config-hibernate.xml" />
<property name="packagesToScan">
<list>
<!-- Additional packages required to be added if entities located elsewhere -->
<value>com.some.package.dao</value>
<value>com.some.package.model</value>
<value>com.some.package.SpecificClass</value>
</list>
</property>
<property name="mappingResources" ref="mappingResources"/>
<bean id="mappingResources" class="org.springframework.beans.factory.config.ListFactoryBean">
<property name="sourceList">
<list>
<!-- here you can add your hibernate mapping query that you want to use on transaction -->
<value>config-hibernate-mapping.xml</value>
</list>
</property>
</bean>
<!-- This will activate transactional annotation -->
<tx:annotation-driven transaction-manager="transactionManager" />
@Service
@Transactional
public class SpecificClass {
// write your method, everyone of them will be transactional
// and there will be a commit in case of success or rollback in case of exception
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.