在java ee 5的環境下,spring的配置可以大大簡化事務的配置,要spring 2.0的了,比如
import org.springframework.transaction.annotation.Transactional;
@Transactional
public interface BookDao {
@Transactional(readOnly=true)
Book query(String id);
@Transactional(readOnly=true)
List<Book> queryAll();
void insert(Book book);
void update(Book book);
void delete(Book book);
}
要注意的是只能注釋到public類裡,不能注釋到private裡的,
另外,XML檔案裡要這樣配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
>
<!-- 定義DataSource -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:mem:bookstore" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<!-- 定義TransactionManager -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 定義BookDao -->
<bean id="bookDao" class="example.chapter6.BookDaoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 將所有具有@Transactional註解的Bean自動設定為聲明式事務支援 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>