当前位置: 首页 > news >正文

柳市网站优化汉寿网站建设

柳市网站优化,汉寿网站建设,动易网站中添加邮箱,蓝杉网站建设公司文章目录 前言一、事务及其参数含义1.事务的四个特性2.事务的传播行为#xff08;propagation#xff09;3.事务隔离性4.事务的隔离级别#xff08;ioslation#xff09;5.timeout#xff08;超时#xff09;6.readOnly#xff08;是否只读#xff09;7.rollbackForpropagation3.事务隔离性4.事务的隔离级别ioslation5.timeout超时6.readOnly是否只读7.rollbackFor回滚8.noRollbackFor不回滚 二、事务管理1.事务管理的两种形式2.注解实现声明式事务管理3.xml实现声明式事务管理4.完全注解开发 总结 前言 事务是数据库操作最基本单位要么都成功要么都失败。 一、事务及其参数含义 1.事务的四个特性 原子性一致性隔离性持久性。 2.事务的传播行为propagation Spring定义了7种传播行为 传播属性描述REQUIRED如果有事务在运行当前的方法就在这个事务内运行否则就启动一个新的事务并在自己的事务内运行REQUIRED_NEW当前的方法必须启动新事务并在它自己的事务内运行如果有事务正在运行应该将它挂起SUPPORTS如果有事务在运行当前的方法就在这个事务内运行否则它可以不运行在事务中NOT_SUPPORTED当前方法不应该运行在事务中如果有运行的事务将它挂起MANDATORY当前的方法不应该运行在事务中如果有运行的事务就抛出异常NESTED如果有事务在运行当前的方法就应该在这个事务的嵌套事务内运行否则就启动一个新的事务并在它自己的事务内运行 这里只图解介绍一个其他类推 3.事务隔离性 脏读一个未提交事务读取到另一个未提交事务的数据 例事务A读取到事务B修改后的数据但是读取后事务B回滚了此时A读取的是修改后的数据但是修改撤销了。不可重复读一个未提交的事务读取到另一个提交事务修改数据 例事务A和事务B读取同一个数据但是事务B在读取后进行修改然后提交提交后事务A又读取这个数据此时读取的是修改后的跟上次读取的不一样。幻读虚读一个未提交的事务读取到另一个提交事务添加数据 4.事务的隔离级别ioslation 5.timeout超时 事务在一定时间内进行提交如果不提交会进行回滚默认值是-1设置时间以秒为单位进行计算。 6.readOnly是否只读 读查询写增删改 默认值是false表示可以增删改查设置true后只能查询。 7.rollbackFor回滚 设置出现哪些异常进行事务回滚。 8.noRollbackFor不回滚 设置出现哪些异常不进行事务回滚。 二、事务管理 Spring事务管理提供了一个接口叫做事务管理器这个接口针对不同的框架提供不同的实现类。 1.事务管理的两种形式 编程式事务管理 例 try{//开启事务//进行业务操作userDao.reduceMoney();//模拟异常int i10/0;userDao.addMoney();//没出现异常事务提交}catch (Exception e){//异常事务回滚}声明式事务管理AOP原理 例 Service Transactional(timeout -1,propagation Propagation.REQUIRED,isolation Isolation.READ_COMMITTED) public class UserService{Autowiredprivate UserDao userDao;public void accountMoney(){userDao.reduceMoney();int i 1 / 0;userDao.addMoney();} }2.注解实现声明式事务管理 就是上述声明式管理的例子这里补充一下全部代码 userDao package com.dragon.shiwu.dao;public interface UserDao {public void addMoney();public void reduceMoney(); } userDaoImpl package com.dragon.shiwu.dao;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository;Repository public class UserDaoImpl implements UserDao{Autowiredprivate JdbcTemplate jdbcTemplate;Overridepublic void addMoney() {String sqlupdate t_account set moneymoney ? where username ?;jdbcTemplate.update(sql,100,mary);}Overridepublic void reduceMoney() {String sqlupdate t_account set moneymoney-? where username?;jdbcTemplate.update(sql,100,lucy);} } userService package com.dragon.shiwu.service;import com.dragon.shiwu.dao.UserDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional;Service Transactional(timeout -1,propagation Propagation.REQUIRED,isolation Isolation.READ_COMMITTED) public class UserService{Autowiredprivate UserDao userDao;public void accountMoney(){userDao.reduceMoney();int i 1 / 0;userDao.addMoney();} } Spring配置文件注意这里引入了tx命名空间和 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:txhttp://www.springframework.org/schema/txxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdcontext:property-placeholder locationclasspath:jdbc.properties/bean iddataSource classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName value${pro.driverClass}/propertyproperty nameurl value${pro.url}/propertyproperty nameusername value${pro.username}/propertyproperty namepassword value${pro.password}/property/bean !--创建JdbcTemplate对象--bean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplate!--注入数据库连接池--property namedataSource refdataSource/property/beancontext:component-scan base-packagecom.dragon.shiwu/context:component-scan !--创建事务管理器--bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource/property/bean!-- 开启事务注解--tx:annotation-driven transaction-managertransactionManager/tx:annotation-driven /beans 运行前 运行后 3.xml实现声明式事务管理 Spring配置文件 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:txhttp://www.springframework.org/schema/txxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdcontext:property-placeholder locationclasspath:jdbc.properties/bean iddataSource classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName value${pro.driverClass}/propertyproperty nameurl value${pro.url}/propertyproperty nameusername value${pro.username}/propertyproperty namepassword value${pro.password}/property/beanbean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplateproperty namedataSource refdataSource/property/bean !-- 开启组件扫描--context:component-scan base-packagecom.dragon.shiwu/context:component-scan!--配置事务通知--tx:advice idtxadvicetx:attributes!--配置事务参数--tx:method nameaccountMoney propagationREQUIRED//tx:attributes/tx:advice!-- 配置切入点和切面--aop:config !-- 配置切入点--aop:pointcut idpt expressionexecution(* com.dragon.shiwu.service.UserService.*(..))/ !-- 配置切面--aop:advisor advice-reftxadvice pointcut-refpt/aop:advisor/aop:config /beans4.完全注解开发 TxConfig类 package com.dragon.shiwu.config;import com.alibaba.druid.pool.DruidDataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;Configuration//配置类 ComponentScan(basePackages com.dragon.shiwu)//组件扫描 EnableTransactionManagement//开启事务 public class TxConfig {//创建数据库连接池Beanpublic DruidDataSource getDruidDataSource(){DruidDataSource druidDataSource new DruidDataSource();druidDataSource.setDriverClassName(com.mysql.cj.jdbc.Driver);druidDataSource.setUrl(jdbc:mysql://localhost:3306/user_db);druidDataSource.setUsername(root);druidDataSource.setPassword(root);return druidDataSource;}//创建JdbcTemplate对象Beanpublic JdbcTemplate getJdbcTemplate(DataSource dataSource){JdbcTemplate jdbcTemplate new JdbcTemplate();jdbcTemplate.setDataSource(dataSource);return jdbcTemplate;}//创建事务管理器Beanpublic DataSourceTransactionManager getDataSourceTransactionManager(DataSource dataSource){DataSourceTransactionManager transactionManager new DataSourceTransactionManager();transactionManager.setDataSource(dataSource);return transactionManager;}} 测试类 package com.dragon.shiwu.test;import com.dragon.shiwu.config.TxConfig; import com.dragon.shiwu.service.UserService; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class test2 {public static void main(String[] args) {ApplicationContext contextnew AnnotationConfigApplicationContext(TxConfig.class);UserService userService context.getBean(userService,UserService.class);userService.accountMoney();} } 总结 以上就是Spring事务管理的讲解。
http://www.dnsts.com.cn/news/271200.html

相关文章:

  • 湛江电子商务网站建设手机网站技术方案
  • 无锡网站制作排名上海网站建设seo公司哪家好
  • 网站只做优化wordpress广告设置
  • 西昌手机网站英文网站推广方法
  • 怎么做同城购物网站做企业网站的尺寸是多少钱
  • 网站开发托管协议西安百度推广多少钱
  • 做班级玩网站做哪些方面泰安肥城网站建设
  • 张掖市网站建设做pc端网站适配
  • 网站建设与管理专业学什么龙华建设网站公司
  • 网站建设 php jsp .net旅游网网站建设目的
  • 网站设计怎么做一点首页就跳转国通快速建站
  • 惠州城市建设建筑网站qq登录网页手机版
  • 广告网站做动图怎么做国外vps 加速免费
  • 做携程网站的技术搜索引擎网站推广怎么做
  • 万网网站建设的子分类能显示多少个融水县建设局网站
  • 家庭网站建设h5制作软件免费 fou
  • 新乡做网站的网站友情链接有什么用
  • flask做视频网站吉安市建设技术培训中心网站
  • php网站开发实用技术订单查询网站怎么做
  • 网站建设报价单模板推广企业网站最主要的方式
  • 柳州网站网站建设网站与系统开发
  • 网站案例模版蒙阴做网站
  • 电子商务网站开发需要注意问题网站建设 简易合同
  • 济源市网站建设东软实训网站开发
  • 龙岗高端网站建设qq空间同步到wordpress
  • 阿里云空间做网站南京移动网站设计
  • 建设部网站安全事故企业网站建设多长时间
  • 建设音乐主题网站代理记账公司哪家好
  • 关于门户网站建设通报芜湖营销型网站制作
  • 湖北企业模板建站开发小伙做钓鱼网站 背警方带走