读书人

说明事宜传播性的小例子

发布时间: 2012-09-07 10:38:15 作者: rapoo

说明事务传播性的小例子

@Test//@NotTransactionalpublic void testSave() {BusStationinfo busStationinfo = new BusStationinfo();busStationinfo.setStationname("q");busStationinfo.setStationfullname("11");busStationinfo.setPosition(0l);Readerinfo readerinfo = new Readerinfo();readerinfo.setReaderid(102102L);busStationinfo.setReaderinfo(readerinfo);busStationinfoDao.save(busStationinfo);String sql = "select t.*, t.rowid from bus_stationinfo t where t.readerid=102102";List<Map<String,Object>> list = simpleJdbcTemplate.queryForList(sql);System.out.println(list);//System.out.println(busStationinfoDao.queryByStationName("suiyujie"));}
?
public boolean save(BusStationinfo busStationinfo) {boolean isSave = false;try {getHibernateTemplate().save(busStationinfo);//getHibernateTemplate().flush();isSave = true;} catch (RuntimeException re) {log.error("BusStationinfoDaoImpl save is failed", re);re.printStackTrace();throw re;}return isSave;}

?这个小例子说明了事务的一个传播性-----

?

说明:在不加@NotTransactional的时候 是表示testSave方法是在事务控制范围之内的,所以新调用的“busStationinfoDao.save(busStationinfo)”方法也是在事务范围之内的,所以说如果save方法中没有flush所以,我们在用SQL语句查询的时候,是查不到的,因为在事务内控制的方法只有等方法结束后,里面的方法才会被提交,所以在testSave没有结束的时候,save进去的数据是放在缓存中的。所以这个时候我们去查数据库是查不到这条数据的。 如果想要查到数据,哪么可以加上一个//getHibernateTemplate().flush();

读书人网 >软件架构设计

热点推荐