小弟在研究事务,目前在学习@Transactional来配置全局事务,但无法更新数据库,请大哥们指点一下
appliactioncontext.xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mappingResources">
<list>
<value>com/data/UserInfo.hbm.xml</value>
</list>
</property>
<!-- 方言 -->
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
</value>
</property>
</bean>
<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
DAO层
@Repository("workoutBusiness")
@Transactional
public class WorkoutBusiness implements IWorkoutBusiness {
@Resource(name="sessionFactory")
SessionFactory sessionFactory;
@Transactional(propagation=Propagation.REQUIRED)
public void saveNewUser(UserInfo user) {
// Session session = sessionFactory.openSession();
Session session = sessionFactory.getCurrentSession();
// Transaction tran = session.beginTransaction();
// tran.begin();
session.save(user);
//tran.commit();
//session.close();
}
}
使用HIBERNATE的事务提交后能插进数据,但用spring @Transactionnal就没反映,也没报错。。。。
------解决方案--------------------
你现在的事务边界是 saveNewUser 方法吧?是的话如果你是循环调用这个方法来插入数据,那每调用一次就是一次事务。所以说一般把事务开在service层
------解决方案--------------------
解决问题的方法很重要、、、