`
annan211
  • 浏览: 460436 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

springJDBC + spring 事务属性

 
阅读更多

  spring 事务传播属性 百分之八十用到的都是 required ,并且这个事被默认使用的。
其含义为 业务方法需要在一个事务中运行,如果方法运行时,已经处在一个事务中,那么加入该事务,否则为自己创建一个新的事务。
  该事务为spring默认属性,通常情况下不需要显示标记。
 
  这里使用注解模式 简单解析一下,不做深入探讨。
 
1  注册事务管理器  交给spring容器管理。


<bean id="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  	   <property name="dataSource" ref="dataSource"/>
    </bean>
  <!--使用注解@Transactional注解方式-->
  <tx:annotation-driven transaction-manager="txManager"/>



  2 使用注解 管理事务


 
    spring 事务回滚与否需要配置,默认情况下,方法在遇到运行期例外(unchecked)的情况下是会自动进行事务回滚的,除非在方法注解 注明:@Transactional(noRollbackFor=RunntimeException.class)

如果遇到的是 checked例外(显示抛出异常,或者 try chach语句块) 默认是不会进行回滚的 ,除非在 方法注解注明 @Transactional(rollbackFor=Exception.class)

有些方法是不需要开启事务支持的,比如 获取对象,事务的开启和关闭会浪费资源,这样我们可以通过 注解注明 不开启事务。
  @Transactional(propagation=Propagation.NOT_SUPPORT)



@Transactional
public class PersonServiceBean implements PersonService {
	private JdbcTemplate jdbcTemplate;
	
        // 这里使用set注入
	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}

	public void delete(Integer personid) {
		jdbcTemplate.update("delete from person where id=?", new Object[]{personid},
				new int[]{java.sql.Types.INTEGER});
	}

	public Person getPerson(Integer personid) {		
		return (Person)jdbcTemplate.queryForObject("select * from person where id=?", new Object[]{personid}, 
				new int[]{java.sql.Types.INTEGER}, new PersonRowMapper());
	}

	@SuppressWarnings("unchecked")
	public List<Person> getPersons() {
		return (List<Person>)jdbcTemplate.query("select * from person", new PersonRowMapper());
	}

	public void save(Person person) {
		jdbcTemplate.update("insert into person(name) values(?)", new Object[]{person.getName()},
				new int[]{java.sql.Types.VARCHAR});
	}

	public void update(Person person) {
		jdbcTemplate.update("update person set name=? where id=?", new Object[]{person.getName(), person.getId()},
				new int[]{java.sql.Types.VARCHAR, java.sql.Types.INTEGER});
	}
}


回调函数
public class PersonRowMapper implements RowMapper {

	public Object mapRow(ResultSet rs, int index) throws SQLException {
		Person person = new Person(rs.getString("name"));
		person.setId(rs.getInt("id"));
		return person;
	}
}
分享到:
评论

相关推荐

    springmvc+springjdbc+maven 后端架构

    Spring JDBC还支持事务管理,使开发者能够轻松处理数据库事务的提交和回滚。 **Maven** Maven 是一个项目管理和综合工具,它帮助开发者管理依赖关系、构建项目、执行自动化测试等。通过在`pom.xml`文件中定义项目...

    jdbc+spring+mysql事务理解和分析

    在Java开发中,使用JDBC、Spring和MySQL进行数据操作时,事务管理是非常关键的一环。事务确保了数据的完整性和一致性,尤其是在并发环境中。以下是对`jdbc+spring+mysql事务理解和分析`的详细说明: 1. **原子性...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    Spring框架则是一个全面的企业级应用开发平台,它不仅包含Spring MVC,还提供了依赖注入(DI)、AOP(面向切面编程)、事务管理、JDBC抽象、缓存、任务调度等多个核心功能。在全注解开发中,我们可以使用@Autowired...

    Spring mvc、 Spring、 Spring jdbc 整合实例源码

    Spring MVC、Spring和Spring JDBC是Java开发中非常重要的三大框架,它们构成了Spring框架的核心部分,广泛应用于企业级应用开发。本实例源码旨在提供一个整合这三者的基础模板,帮助开发者理解和掌握它们之间的协同...

    Spring事务管理和SpringJDBC思维导图

    在思维导图"Spring Transaction.twd"中,可能包含了Spring事务管理的各个概念和它们之间的关系,如事务的ACID属性(原子性、一致性、隔离性和持久性),事务管理器,以及声明式和编程式事务管理的实现方式。...

    基于Spring JDBC的事务管理

    本资源主要介绍基于Spring JDBC的事务管理,包括事务的定义、使用 @Transactional 注解、Spring JDBC的事务管理机制、事务的ACID特性、事务的传播、事务的隔离等内容。 事务的定义 事务是一种数据库中能够保证一...

    spring+springMvc+jdbc 简易框架整合

    在Spring整合中,JDBC通常通过Spring的数据访问抽象层来使用,例如JdbcTemplate或NamedParameterJdbcTemplate,它们简化了SQL查询的编写和执行,同时提供了事务管理和异常处理。在本项目中,可能有一个配置文件(如`...

    Maven + spring + mybatis + mysql + 事务管理

    在事务管理方面,Spring提供了编程式和声明式事务管理,使得开发者能够轻松地处理事务的ACID属性。 **MyBatis** 是一个优秀的持久层框架,它简化了数据库操作。MyBatis将SQL与Java代码分离,允许开发者编写高度灵活...

    SpringJDBC注解事务.zip

    本篇文章将深入探讨Spring JDBC如何通过注解来实现事务管理。 1. **Spring JDBC简介** Spring JDBC提供了一个JdbcTemplate类,它封装了常见的JDBC操作,如执行SQL查询、更新、调用存储过程等,减少了代码量和出错...

    spring JDBC事务管理

    关键类如`TransactionDefinition`定义了事务属性,如隔离级别、超时时间等;`TransactionStatus`接口则表示当前事务的状态。在事务管理器内部,Spring会根据这些信息创建并维护事务。 **工具使用**:Spring提供了...

    spring jdbc 事务

    2. 在业务代码中,通过TransactionDefinition定义事务属性(如隔离级别、超时时间等)。 3. 使用TransactionTemplate或者直接调用PlatformTransactionManager的方法来管理事务的生命周期。 **声明式事务管理**: 1....

    spring+mybatis+事务

    同时,我们还可以根据业务需求调整事务的隔离级别、传播行为、超时限制等属性。 综上所述,"Spring+Mybatis+事务"的组合在Java后端开发中占据着重要地位,这个压缩包"Spring_Mybatis"可能包含了Spring和MyBatis的...

    SpringJDBC

    Spring JDBC通过抽象出数据库连接管理、事务处理以及结果集处理等繁琐工作,使得开发者可以专注于SQL语句和业务逻辑,而不必过于关心底层数据库交互的复杂性。 在Spring JDBC中,主要涉及到以下几个关键概念: 1. ...

    Spring+JOTM 分布式事务管理

    声明式事务管理是通过在配置文件或注解中声明事务属性,如传播行为、隔离级别、超时和回滚规则,从而实现事务管理。这使得开发者无需在业务逻辑代码中手动管理事务的开始、提交和回滚。Spring的`...

    Spring+JDBC实例

    4. **事务管理**:Spring还提供了事务管理能力,可以在方法级别或类级别声明事务边界。例如,对于需要原子性的操作,可以添加`@Transactional`注解。 通过这个实例,我们可以看到Spring+JDBC的结合使用大大简化了...

    Spring+JDBC组合开发

    此外,Spring还提供DataSourceTransactionManager和PlatformTransactionManager作为事务管理器,以及TransactionDefinition接口来定义事务属性。 5. AOP(面向切面编程)在事务管理中的应用:Spring的AOP模块可以让...

    小码农的代码(二)----------SpringJDBC事务控制

    在实际开发中,我们可以通过配置XML或Java配置来设置事务管理器,并指定事务属性。例如,使用XML配置,可以在`&lt;tx:annotation-driven&gt;`标签中启用声明式事务管理;在Java配置中,可以使用`@...

    Spring4+SpringMVC+Mybaties 内含有事务控制

    2. **声明式事务管理**:通过在配置文件或注解中声明事务属性,由Spring自动进行事务管理。这种方式更加简洁,降低了代码的耦合度,推荐在实际开发中使用。 在SpringMVC和MyBatis集成环境中,声明式事务管理通常...

    spring-jdbc源码

    在Spring的声明式事务管理下,只需在配置文件中声明事务属性,即可实现事务的自动管理,大大提高了开发效率。 在Spring-JDBC中,主要涉及以下几个关键组件: 1. DataSource:数据源是连接数据库的桥梁,Spring支持...

Global site tag (gtag.js) - Google Analytics