简单的对比介绍下用 @Transactional 注解和 不使用的区别
@Before
public void setUp() throws Exception {
Software software = new Software();
software.setViewable(false);
software.setSoftChName("ruanjian");
Software soft = softwareRepository.save(software);
LOG.info("保存成功,软件名为:" + soft.getSoftChName());
for (int i = 0; i <5 ; i++) {
Software so=new Software();
so.setSoftChName("软件"+i);
so.setViewable(true);
Software ware=softwareRepository.save(so);
LOG.info("软件名"+ware.getSoftChName());
}
}
不使用该注解 -控制台打印
使用@Transactional注解 -控制台打印
使用@Transactional注解,Test类中每个方法执行完之后都会默认清空虚拟数据库中的数据,因此便不再需要每次执行完都要清空数据。
另一种方法就是加一个@after 方法
@After
public void teraDown(){
System.out.println("原数据:"+softwareRepository.findAll().size());
softwareRepository.deleteAllInBatch();
System.out.println("清空后的数据:"+softwareRepository.findAll().size());
}
如果不使用@Transactional 注解,同时也没有@after 方法清空数据库,那么@before 中的数据将会重复创建,数据将会积累。分情况使用。