class TestService{
@Autowired
private SqlSessionTemplate sqlSession;
public void insert(Map map1,Map map2,Map map3){
sqlSession.insert("testMapper.insert",map1);
sqlSession.insert("testMapper.insert",map2);
sqlSession.insert("testMapper.insert",map3);
}
}
をケース2:
@Service
class ObjectService{
@Autowired
private SqlSessionTemplate sqlSession;
public void insert(Map map){
sqlSession.insert("testMapper.insert",map);
}
}
class TestService{
@Autowired
private ObjectService objectService;
public void insert(Map map1,Map map2,Map map3){
objectService.insert(map1);
objectService.insert(map2);
objectService.insert(map3);
}
}
IはMyBatisのを使用し、私はスプリングを使用してトランザクションを構成しています。ケース#1で記述されたコードが例外をスローし、トランザクションがロールバックされるという問題があります(実際にはデータベースには何も挿入されません)。
ケース#2を実行すると、エラーは再びスローされますが、データはデータベースに挿入されたままロールバックされません。