<context:annotation-config /> <context:component-scan base-package="bean, dao, service" /> <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource" p:driverClassName="oracle.jdbc.driver.OracleDriver" p:url="jdbc:oracle:thin:@127.0.0.1:1521:orcl" p:username="user-name" p:password="password" /> <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="ds" /> <bean id="txm" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="ds" /> </bean> <tx:annotation-driven transaction-manager="txm"/>
※事務在第3版就有了,更之前的版本我不知道有沒有,寫在 4 並不代表 4 才有
※@Transaction 要配合<tx:annotation driven transaction-manager="" />,且只能使用在 public,否則不啟作用,也不報錯
※在這裡已經設定 JdbcTemplate,如果在下SQL時,自己用 DriverManagerDataSource 取得 JdbcTemplate 也是不啟作用的
※@Transaction 有個屬性 rollbackFor,不設定時為所有例外都會 rollback,如設定 RuntimeException.class,那只有 RuntimeException 時才會 rollback
※還有一些陷阱,高手已經寫好,可參考看看
沒有留言:
張貼留言