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

电影网站如何建设会员式企业域名是什么

电影网站如何建设会员式,企业域名是什么,贵阳网站设计,关键词搜索目录 前言#xff1a; 事务的相关问题 1、什么是事务#xff1f; 2、事务的特点#xff08;ACID#xff09; 3、什么时候想到使用事务#xff1f; 4、通常使用JDBC访问数据库#xff0c;还是mybatis访问数据库#xff0c;怎么处理事务#xff1f; 5、问题中事务处…目录 前言 事务的相关问题 1、什么是事务 2、事务的特点ACID 3、什么时候想到使用事务 4、通常使用JDBC访问数据库还是mybatis访问数据库怎么处理事务 5、问题中事务处理的方式有什么不足 6、怎么解决不足 7、处理事务需要怎么做做什么 8、事务的隔离级别 9、事务的超时时间 10、事务的传播行为 spring boot中配置事务以及使用 1、进行配置类的处理 2、创建数据资源配置类 3、实际代码里面调用实践 总结 前言 目前大多数的项目都是通过spring或者springboot来开发的并且项目里面操作数据库常用的有mybatis\mybatis-plus等在操作数据库的时候经常会使用事务的处理因为在操作数据库的时候如果出现异常的话所有的数据库操作都能够回滚操作避免造成一些异常数据的问题。目前网络上搜索的都是原始的配置方式比如说使用xml进行bean的配置或者说直接在方法头上面进行添加注解的方式进行调用的本文主要介绍通过配置类进行管理实务的方式统一的管理、统一的处理方式。 事务的相关问题 1、什么是事务 事务是指一组SQL语句的集合集合中有多条SQL语句可以是insert、update、select、delete希望这些SQL语句执行是一致的作为一个整体执行。要么都成功要么都失败。 2、事务的特点ACID 原子性Atomicity事务是一个原子操作由一系列动作组成。事务的原子性确保动作要么全部完成要么完全不起作用。 一致性Consistency一旦事务完成不管成功还是失败系统必须确保它所建模的业务处于一致的状态而不会是部分完成部分失败。在现实中的数据不应该被破坏。 隔离性Isolation可能有许多事务会同时处理相同的数据因此每个事务都应该与其他事务隔离开来防止数据损坏。 持久性Durability一旦事务完成无论发生什么系统错误它的结果都不应该受到影响这样就能从任何系统崩溃中恢复过来。通常情况下事务的结果被写到持久化存储器中。 3、什么时候想到使用事务 1当操作设计多个表或者是多个SQL语句的insert、update、delete。需要保证这些语句都是成功才能完成功能或者都失败是符合要求的。要么都成功要么都失败 2事务在java开发中如何运用 1、事务放在service类的业务方法中因为业务方法会调用多个dao执行多条SQL语句 4、通常使用JDBC访问数据库还是mybatis访问数据库怎么处理事务 1jdbc访问数据处理事务。Connection connconn.commit();conn.rollback(); 2mybatis访问数据库处理事务。SqlSession.commit() ;SqlSession.rollback(); 3hibernate访问数据库处理事务Session.commit(); Session.rollback(); 5、问题中事务处理的方式有什么不足 1不同数据库访问技术处理事务的对象、方法不同。需要了解不同数据库使用事务的原理。 2需要掌握多种数据库事务的处理逻辑什么时候提交事务什么时候回滚事务。 3处理事务的方法种类多。 总结就是多种数据库访问技术不同的事务处理的机制、对象、方法。较难掌握。 6、怎么解决不足 spring提供了处理事务的统一模型能够使用统一的步骤、方式完成多种不同数据库访问技术的事务处理。使用spring的事务处理机制可以完成mybatis、hibernate访问数据库的事务处理。 7、处理事务需要怎么做做什么 spring处理事务的模型使用的步骤都是固定的。把事务要使用的信息都提供给spring就可以了。 1事务内部提交、回滚事务使用的是事务管理器对象代替手动commit、rollback。事务管理器是一个接口和其众多的实现类。 接口PlatformTransactionManager定义了事务的重要方法 commit、rollback 实现类spring把每一种数据库访问技术对应的事务处理累都创建好了。 a、mybatis访问数据库—spring创建好的是DataSourceTransactionManager b、hibernate访问数据库—spring创建好的是HibernateTransactionManager 怎么使用 只需告诉spring使用哪种数据库的访问技术框架声明数据库访问技术对应的事务管理器的实现类在spring的配置文件中使用bean声明就可以了。例如使用mybatis访问数据库 bean id xxx class ...DataSourceTransactionManager/ 1 2业务方法需要什么样的事务说明需要事务的类型。 8、事务的隔离级别 有 5 个值其中一个是默认。这些常量均是以ISOLATION_开头即形如ISOLATION_XXX。 1、DEFAULT采用DB默认的事务隔离级别。MySQL的默认隔离级别REPEATABLE_READ可重复读Oracle默认的隔离级别READ_COMMITTED读已提交 2、READ_UNCOMMITTED读未提交未解决任何并发问题。 3、READ_COMMITTED读已提交。解决度脏数据存在不可重复读与幻读。 4、REPEATABLE_READ可重复度。解决脏读、不可重复读存在幻读。 5、SERIALIZABLE串行化。不存在并发问题。 9、事务的超时时间 表示一个方法最长的执行时间如果方法执行时超过了这个时间事务就回滚。单位是秒整数值默认是-1表示没有限制最长时间。 10、事务的传播行为 控制业务方法是不是有事务的是什么样的事务的。共有 7 个传播行为。标红常用需掌握 1PROPAGATION_REQUIRED指定的方法必须在事务内执行。若当前存在事务就加入当前事务中若当前没有事务则创建一个新事务。这种创博行为时最常见的选择也是spring默认的事务传播行为。 2PROPAGATION_REQUIRES_NEW总是新建一个事务若当前存在事务就将当前事务挂起知道新事物执行完毕。 3PROPAGATION_SUPPORTS指定方法支持当前事务但若当前没有事务也可以以非事务的方式执行。 4PROPAGATION_MANDATORY 5PROPAGATION_NESTED 6PROPAGATION_NEVER 7PROPAGATION_NOT_SUPPORTED spring boot中配置事务以及使用 1、进行配置类的处理 #transaction setting############################################### spring.transaction.aop.aop-pointcut-expressionexecution(* com...*ServiceImpl.*(..)) spring.transaction.aop.tx-method-timeout3600 spring.transaction.aop.require-ruleinsert*,update*,delete*,do* spring.transaction.aop.read-only-rulequery* spring.transaction.aop.indep-transaction-ruleindep* 第一个配置该方法主要是为了在操作的时候扫描包的路径不是所有的方法都是走事务处理的。 第二个配置配置处理的时间大小36秒 第三个配置为了限制规则比如说方法的名称必须是什么开头的只有这些方法名称开头的才会走事务的处理 第四个配置读取的规则的方法名称开头的命名 第五个配置事务的处理规则 2、创建数据资源配置类 import java.sql.Connection; import java.sql.SQLException; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import javax.sql.DataSource; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.aop.Advisor; import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource; import org.springframework.transaction.interceptor.RollbackRuleAttribute; import org.springframework.transaction.interceptor.RuleBasedTransactionAttribute; import org.springframework.transaction.interceptor.TransactionAttribute; import org.springframework.transaction.interceptor.TransactionInterceptor;Configuration public class SpringBootDatasourceConfig {private Logger LOGGER LoggerFactory.getLogger(SpringBootDatasourceConfig.class);Value(${spring.transaction.aop.tx-method-timeout})private int TX_METHOD_TIMEOUT 60;Value(${spring.transaction.aop.aop-pointcut-expression})private String AOP_POINTCUT_EXPRESSION;Value(#{${spring.transaction.aop.require-rule}.split(,)})private ListString requireRuleList;Value(#{${spring.transaction.aop.read-only-rule}.split(,)})private ListString readOnlyRuleList;Value(#{${spring.transaction.aop.indep-transaction-rule}.split(,)})private ListString indepTransactionRuleList;Value(${mybatis.mapper-locations})private String MYBATIS_MAPPER_LOCATIONS;Value(${mybatis.config-location})private String MYBATIS_CONFIG_LOCATION;Value(${mybatis.jdbc.dialect.type})private String MYBATIS_JDBC_DIALECT_TYPE;public SpringBootDatasourceConfig() {}PrimaryBean({db1DataSourceProperties})ConfigurationProperties(prefix spring.datasource.db1)public DataSourceProperties dataSourceProperties() {DataSourceProperties dataSourceProperties new DataSourceProperties();return dataSourceProperties;}PrimaryBean({db1DataSource})ConfigurationProperties(prefix spring.datasource.db1.tomcat)public DataSource db1DataSource(Qualifier(db1DataSourceProperties) DataSourceProperties dataSourceProperties) {DataSource dataSource dataSourceProperties.initializeDataSourceBuilder().build();return dataSource;}PrimaryBean(name {db1SqlSessionFactory})public SqlSessionFactory db1SqlSessionFactory(Qualifier(db1DataSource) DataSource datasource) throws Exception {SqlSessionFactoryBean bean new SqlSessionFactoryBean();bean.setDataSource(datasource);bean.setMapperLocations((new PathMatchingResourcePatternResolver()).getResources(this.MYBATIS_MAPPER_LOCATIONS));bean.setConfigLocation((new PathMatchingResourcePatternResolver()).getResource(this.MYBATIS_CONFIG_LOCATION));PageInterceptor pageInterceptor new PageInterceptor();Properties properties new Properties();properties.setProperty(dialect, this.MYBATIS_JDBC_DIALECT_TYPE);pageInterceptor.setProperties(properties);Interceptor[] plugins new Interceptor[]{pageInterceptor};bean.setPlugins(plugins);return bean.getObject();}Bean({sqlSessionTemplate})public SqlSessionTemplate db1SqlsessionTemplate(Qualifier(db1SqlSessionFactory) SqlSessionFactory sessionfactory) {SqlSessionTemplate sqlSessionTemplate new SqlSessionTemplate(sessionfactory);if (sqlSessionTemplate ! null) {Connection connection null;try {connection sqlSessionTemplate.getConnection();} catch (Exception var13) {this.LOGGER.error(SqlSessionTemplate初始化连接池失败, var13);} finally {if (connection ! null) {try {connection.close();} catch (SQLException var12) {this.LOGGER.error(关闭连接失败, var12);}}}}return sqlSessionTemplate;}Bean({txmanager})public DataSourceTransactionManager txManager(Qualifier(db1DataSource) DataSource dataSource) {DataSourceTransactionManager dataSourceTransactionManager new DataSourceTransactionManager();dataSourceTransactionManager.setDataSource(dataSource);return dataSourceTransactionManager;}Bean({txAdvice})public TransactionInterceptor txAdvice(Qualifier(txmanager) DataSourceTransactionManager dataSourceTransactionManager) {RuleBasedTransactionAttribute readOnlyRule new RuleBasedTransactionAttribute();readOnlyRule.setReadOnly(true);readOnlyRule.setPropagationBehavior(4);RuleBasedTransactionAttribute requireRule new RuleBasedTransactionAttribute();requireRule.setRollbackRules(Collections.singletonList(new RollbackRuleAttribute(RuntimeException.class)));requireRule.setPropagationBehavior(0);requireRule.setIsolationLevel(2);requireRule.setTimeout(this.TX_METHOD_TIMEOUT);RuleBasedTransactionAttribute indepTransactionRule new RuleBasedTransactionAttribute();indepTransactionRule.setRollbackRules(Collections.singletonList(new RollbackRuleAttribute(RuntimeException.class)));indepTransactionRule.setPropagationBehavior(3);indepTransactionRule.setIsolationLevel(2);indepTransactionRule.setTimeout(this.TX_METHOD_TIMEOUT);MapString, TransactionAttribute txMap new HashMap();int i;String indepTransacdtionAopRule;for(i 0; i this.requireRuleList.size(); i) {indepTransacdtionAopRule (String)this.requireRuleList.get(i);txMap.put(indepTransacdtionAopRule.trim(), requireRule);}for(i 0; i this.readOnlyRuleList.size(); i) {indepTransacdtionAopRule (String)this.readOnlyRuleList.get(i);txMap.put(indepTransacdtionAopRule.trim(), readOnlyRule);}for(i 0; i this.indepTransactionRuleList.size(); i) {indepTransacdtionAopRule (String)this.indepTransactionRuleList.get(i);txMap.put(indepTransacdtionAopRule.trim(), indepTransactionRule);}NameMatchTransactionAttributeSource nameMatchTransactionAttributeSource new NameMatchTransactionAttributeSource();nameMatchTransactionAttributeSource.setNameMap(txMap);TransactionInterceptor txAdvice new TransactionInterceptor(dataSourceTransactionManager, nameMatchTransactionAttributeSource);return txAdvice;}Beanpublic Advisor txAdviceAdvisor(Qualifier(txAdvice) TransactionInterceptor transactionInterceptor) {AspectJExpressionPointcut pointcut new AspectJExpressionPointcut();pointcut.setExpression(this.AOP_POINTCUT_EXPRESSION);return new DefaultPointcutAdvisor(pointcut, transactionInterceptor);} } 3、实际代码里面调用实践 第一种添加异常方法直接调用接口就可以看到相关的效果只不过需要在数据库变更的后面添加相关的异常抛出让整个方法异常然后看一下这个数据库的记录没有变化已经 回滚了 第二种去除异常方法让整个方法正常执行下去通过 数据库查询一下记录看一下数据是更新是成功落库的 总结 目前网络上面搜索到的都是直接使用的注解进行事务的处理而不是根据配置文件进行配置规则、以及事务的统一管理处理比如说方法名称进行切面的处理那些方法是会进行mybatis数据库的更新处理会走事务处理比如说目前的很多大型公司或者说需要保持事务一致性的公司都会用到整个的调用链比较长如果中途出现了问题会进行事务的回滚处理避免了很多的问题数据库里面存在垃圾数据的问题
文章转载自:
http://www.morning.bdkhl.cn.gov.cn.bdkhl.cn
http://www.morning.qbzdj.cn.gov.cn.qbzdj.cn
http://www.morning.gqfbl.cn.gov.cn.gqfbl.cn
http://www.morning.bzwxr.cn.gov.cn.bzwxr.cn
http://www.morning.mwjwy.cn.gov.cn.mwjwy.cn
http://www.morning.gyrdn.cn.gov.cn.gyrdn.cn
http://www.morning.yfcbf.cn.gov.cn.yfcbf.cn
http://www.morning.kfhm.cn.gov.cn.kfhm.cn
http://www.morning.clwhf.cn.gov.cn.clwhf.cn
http://www.morning.tmxfn.cn.gov.cn.tmxfn.cn
http://www.morning.dmldp.cn.gov.cn.dmldp.cn
http://www.morning.wdhlc.cn.gov.cn.wdhlc.cn
http://www.morning.xqxrm.cn.gov.cn.xqxrm.cn
http://www.morning.pfntr.cn.gov.cn.pfntr.cn
http://www.morning.yprnp.cn.gov.cn.yprnp.cn
http://www.morning.pngfx.cn.gov.cn.pngfx.cn
http://www.morning.bmpjp.cn.gov.cn.bmpjp.cn
http://www.morning.cdrzw.cn.gov.cn.cdrzw.cn
http://www.morning.qmncj.cn.gov.cn.qmncj.cn
http://www.morning.hrrmb.cn.gov.cn.hrrmb.cn
http://www.morning.kgnrh.cn.gov.cn.kgnrh.cn
http://www.morning.kbdrq.cn.gov.cn.kbdrq.cn
http://www.morning.ssfq.cn.gov.cn.ssfq.cn
http://www.morning.fjntg.cn.gov.cn.fjntg.cn
http://www.morning.rpljf.cn.gov.cn.rpljf.cn
http://www.morning.glpxx.cn.gov.cn.glpxx.cn
http://www.morning.mnccq.cn.gov.cn.mnccq.cn
http://www.morning.bpncd.cn.gov.cn.bpncd.cn
http://www.morning.dyrzm.cn.gov.cn.dyrzm.cn
http://www.morning.cxnyg.cn.gov.cn.cxnyg.cn
http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn
http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn
http://www.morning.wxckm.cn.gov.cn.wxckm.cn
http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn
http://www.morning.pzss.cn.gov.cn.pzss.cn
http://www.morning.fbzyc.cn.gov.cn.fbzyc.cn
http://www.morning.fxygn.cn.gov.cn.fxygn.cn
http://www.morning.xqcbz.cn.gov.cn.xqcbz.cn
http://www.morning.hmjasw.com.gov.cn.hmjasw.com
http://www.morning.jhwwr.cn.gov.cn.jhwwr.cn
http://www.morning.lqpzb.cn.gov.cn.lqpzb.cn
http://www.morning.fssjw.cn.gov.cn.fssjw.cn
http://www.morning.routalr.cn.gov.cn.routalr.cn
http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn
http://www.morning.jljwk.cn.gov.cn.jljwk.cn
http://www.morning.qytpt.cn.gov.cn.qytpt.cn
http://www.morning.fdhwh.cn.gov.cn.fdhwh.cn
http://www.morning.dblfl.cn.gov.cn.dblfl.cn
http://www.morning.khlxd.cn.gov.cn.khlxd.cn
http://www.morning.jzccn.cn.gov.cn.jzccn.cn
http://www.morning.drbwh.cn.gov.cn.drbwh.cn
http://www.morning.skwwj.cn.gov.cn.skwwj.cn
http://www.morning.wmnpm.cn.gov.cn.wmnpm.cn
http://www.morning.mbfj.cn.gov.cn.mbfj.cn
http://www.morning.rymd.cn.gov.cn.rymd.cn
http://www.morning.dmzmy.cn.gov.cn.dmzmy.cn
http://www.morning.mbpfk.cn.gov.cn.mbpfk.cn
http://www.morning.wqpm.cn.gov.cn.wqpm.cn
http://www.morning.yongkangyiyuan-pfk.com.gov.cn.yongkangyiyuan-pfk.com
http://www.morning.qdlr.cn.gov.cn.qdlr.cn
http://www.morning.bkslb.cn.gov.cn.bkslb.cn
http://www.morning.sxfmg.cn.gov.cn.sxfmg.cn
http://www.morning.kzhxy.cn.gov.cn.kzhxy.cn
http://www.morning.nylbb.cn.gov.cn.nylbb.cn
http://www.morning.dfbeer.com.gov.cn.dfbeer.com
http://www.morning.dqdss.cn.gov.cn.dqdss.cn
http://www.morning.kgrwh.cn.gov.cn.kgrwh.cn
http://www.morning.rfrx.cn.gov.cn.rfrx.cn
http://www.morning.nggbf.cn.gov.cn.nggbf.cn
http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn
http://www.morning.blxlf.cn.gov.cn.blxlf.cn
http://www.morning.prmbb.cn.gov.cn.prmbb.cn
http://www.morning.rxdsq.cn.gov.cn.rxdsq.cn
http://www.morning.smqjl.cn.gov.cn.smqjl.cn
http://www.morning.dbcw.cn.gov.cn.dbcw.cn
http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn
http://www.morning.lbxhy.cn.gov.cn.lbxhy.cn
http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn
http://www.morning.lsqxh.cn.gov.cn.lsqxh.cn
http://www.morning.rxlk.cn.gov.cn.rxlk.cn
http://www.tj-hxxt.cn/news/278646.html

相关文章:

  • 成都网站建设公司招聘o2o网站建设多少钱
  • 淘宝客如何建设推广网站互联网推广的特点
  • 网站开发入什么费用wordpress怎么读
  • 佛山网站建设专业品牌如何在易语言上做网站
  • 最新网站建设视频搜索自定义关键词优化
  • 建设人行官方网站镇江模板网站
  • 三屏营销型网站建设html5响应式网站模版
  • 怎么做自己网站怎么分享网站
  • 提供网站建设报价昆明网站建设 技术支持
  • 给别人网站做跳转信阳电子商务平台网站建设
  • 做网站销售好做吗wordpress 调用 置顶
  • 游戏网站建设流程图wordpress 分享 赞
  • 网站建设的主要工作内容上海网站制作哪家好
  • 新建设网站如何推广wordpress+内网
  • 网站建设协议微信开店免费平台
  • 网站建设价格最低多少钱企业网站优化案例
  • seo站内优化公司wordpress c值播放
  • 厦门做网站软件岳麓书院网页制作
  • 域名服务器ip查询网站做一款网站注意啥
  • 月嫂的个人简历网站模板杭州科技网站
  • 中国建设银行官网站网点电商产品推广方案范文
  • 中山网站开发公司企业信息查询
  • 建设全球购多用户商城网站莆田专业建站公司
  • 大连哪里有手机自适应网站建设wordpress h1标签优化
  • 网站设计怎么写龙岗建设高端网站
  • 哪里有门户网站开发公司网页设计文案
  • 做一套网站开发多少钱wordpress 宝典 pdf
  • html5经典网站网站制作企业
  • 网站重要组成部分邀请注册推广赚钱的app
  • 一个域名对应多个网站蒲城县住房和城乡建设局网站