@Test
//@NotTransactional
public 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();
分享到:
相关推荐
本文将详细介绍Spring中的事务传播属性,并通过具体的例子来解释每种传播行为的特点。 #### 二、事务传播属性概述 事务传播行为(Propagation)定义了当一个事务方法被另一个事务方法调用时的行为。在Spring中,...
在这个例子中,如果`updateUser()`和`updateOrder()`任意一个操作失败,整个事务将被回滚,确保数据的一致性。 2. **XML配置声明事务**:在Spring的XML配置文件中,我们可以通过`<tx:annotation-driven>`元素开启...
事务传播行为定义了当方法被另一个带有事务属性的方法调用时,该方法如何处理事务。Spring 提供了多种不同的传播行为选项,这些选项可以帮助开发者更好地控制事务的创建与参与。 #### 1. `@Transactional...
在这个例子中,如果`updateUserAndAddress`方法内的任何操作失败,整个事务将会被回滚,从而保证数据的一致性。 总结,Spring的事务管理是其核心特性之一,它简化了事务的处理,使得开发者能够专注于业务逻辑。通过...
在这样的场景下,通常会结合Spring的声明式事务管理与Hibernate的Session进行交互,确保数据操作的原子性、一致性、隔离性和持久性。 总之,声明式事务管理是Spring中的重要特性,它极大地简化了事务控制,使开发者...
1. 配置`TransactionProxyFactoryBean`,设置目标对象(即包含业务逻辑的方法)和事务属性(如事务传播行为、隔离级别等)。 2. 指定需要进行事务管理的方法,通常通过`transactionAttributeSource`属性指定。 3. ...
在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务...
除了隔离级别外,Spring还支持不同的事务传播行为。这些传播行为定义了如何在一个事务上下文中调用另一个事务或非事务方法。具体包括以下几种: 1. **PROPAGATION_REQUIRED**:这是最常用的传播行为。如果当前存在...
- **事务传播**:不同的方法调用关系可能需要不同的事务传播行为。例如,一个事务方法被另一个事务方法调用,此时需要根据业务需求选择合适的`propagation`属性。 - **性能影响**:虽然注解简化了事务管理,但也会...
2. 注解驱动:我们可以使用`@EnableTransactionManagement`注解启用基于注解的事务管理,并配置事务属性,比如传播行为、隔离级别和超时设置。 3. 使用`@Transactional`:在需要进行事务控制的方法上添加`@...
事务传播行为定义了当一个方法调用另一个方法时,事务如何传播。Spring支持七种不同的传播行为: 1. **PROPAGATION_REQUIRED**:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 2. **...
除了基本的事务控制,Spring还提供了丰富的事务属性,如传播行为(PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS等)、隔离级别(ISOLATION_DEFAULT、ISOLATION_READ_UNCOMMITTED等)和事务超时设置,允许开发者根据...
注解中可以包含多个属性,如`value`(指定事务管理器)、`propagation`(事务传播行为)、`isolation`(事务隔离级别)、`readOnly`(是否只读事务)等,以定制事务的行为。 3. **事务传播行为** 事务传播行为定义...
-- 下面定义事务传播属性 [ bus* 事务的方法名]--> *">PROPAGATION_REQUIRED <!-- 定义BeanNameAutoProxyCreator,该bean是个bean后处理器,无需被引用,因此没有id属性--> class="org.spring...
以下是一个使用`@Transactional`注解的例子,展示了如何在Service类中控制事务传播: ```java @Service public class UsersService { @Autowired private JdbcTemplate jdbcTemplate; // 其他成员变量和方法 ...
事务是数据库操作的基本单元,它保证了一组数据库操作的原子性、一致性、隔离性和持久性(ACID属性)。这意味着要么所有操作都成功,要么全部回滚,不会留下不一致的状态。 2. **Spring 声明式事务管理概述** ...
在Java企业级应用开发中...5. 事务传播属性:理解`REQUIRED`、`SUPPORTS`等不同的事务传播行为。 这个实例将帮助开发者更好地理解和实践Spring与Hibernate的集成,以及如何有效地管理事务,确保应用程序的数据一致性。
- 传播行为(propagation):定义了当前事务如何与被调用的方法的事务关联,如REQUIRED(默认,如果存在事务则加入,否则新建)、SUPPORTS(如果存在事务则加入,否则无事务)、MANDATORY(必须在事务中运行)、...
在实际项目中,可能还需要考虑更多的复杂情况,如事务传播行为(PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW等)、事务超时、异常处理策略等。此外,对于大规模的分布式系统,可能还需要结合分布式事务解决方案...