我有Spring 4 with Hibernate 4.我的问题是我想对导入的数据进行事务处理。我解析JSON,然后将其存储到DB。但是当出现问题时(服务器会崩溃)。我不想在数据库中包含部分数据。
我有方法:
@Transactional
private void processJson()
我在循环中调用:
recipientGroupSellInService.saveOrUpdate(perDay);
看起来很像这样:
@Transactional
private void processJson(){
for(int i : iSet){
recipientGroupSellInService.saveOrUpdate(perDay[i]);
}
}
保存或更新:
@Transactional
public Boolean saveOrUpdate(T model) {
getSession().saveOrUpdate(model);
return true;
}
所以在调用saveOrUpdate
之后,数据会存储到数据库中,而不会在方法processJson
的一般失败时回滚。
我应该关注或更改方法processJson
上的“真实交易”?
答案 0 :(得分:0)
交易在processJson()
开始。由于您的saveOrUpdate()
正在使用常规@Transactional
,因此它将加入之前启动的交易。
如果出现问题(即RuntimeException
),则processJson()
所做的任何内容都将被回滚。
您是否声称您正在看到写入部分数据的行为?
答案 1 :(得分:0)
您是否配置了PlatformTransactionManager? (来自xml或来自配置)
例如:
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>