spring事物问题
我已经在spring的配置文件中配置好了一个事物代理
<bean id= "employeeDaoProxy "
class= "org.springframework.transaction.interceptor.TransactionProxyFactoryBean ">
<property name= "proxyInterfaces ">
<list>
<value> com.IEmployee </value>
</list>
</property>
<property name= "target ">
<ref bean= "employeeHibernateDao " />
</property>
<property name= "transactionManager ">
<ref bean= "hibernateTransactionManager " />
</property>
<property name= "transactionAttributeSource "> <!-- 我的事物属性源使用的是spring默认的属性源 -->
<ref bean= "matchAlwaysTransactionAttributeSource "/>
</property>
</bean>
现在问题是如何做事物操作?
比如employeeHibernateDao这个类里面有一个方法叫add
public void add()
{
Employee employee=new Employee ();
employee.setUserid( "001 ");
getHibernateTemplate().save(employee);
employee.setUserid( "001 ");
getHibernateTemplate().save(employee);
}
我这里故意让他主键起冲突,连续插入两次001,但是结果不会回滚呀.第一次插入的001插入到了数据库,第二次异常了.按事物的机制因该是只要其中一次失败就回滚.
刚刚接触spring不长时间,有点不太明白.spring这样把事物封装起来了,导致我无法控制事物的提交了.
如果过去在hibernate里,只有当我tr.comit()后,才能将之前的所有save操作提交.请问这样在spring事物代理要怎么实现?
------解决方案--------------------不用默认的,用手动的试试,更好的办法是直接控制service,不控制dao.
------解决方案--------------------http://hi.baidu.com/sunyu830317/blog/item/74b3b1fe6f6fbf325c6008f0.html