前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java项目实践,数据访问层事务控制方法总结,保障数据安全

Java项目实践,数据访问层事务控制方法总结,保障数据安全

作者头像
用户1289394
发布2020-11-16 14:54:31
5640
发布2020-11-16 14:54:31
举报
文章被收录于专栏:Java学习网

为什么需要事务?

事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问,比如,银行转帐业务,账户A要将自己账户上的1000元转到B账户下面,A账户余额首先要减去1000元,然后B账户要增加1000元。假如在中间网络出现了问题,A账户减去1000元已经结束,B因为网络中断而操作失败,那么整个业务失败,必须做出控制,要求A账户转帐业务撤销。

这才能保证业务的正确性,完成这个操作就需要事务,将A账户资金减少和B账户资金增加放到一个事务里面,要么全部执行成功,要么操作全部撤销,这样就保持了数据的安全性。

java中的事务主要有两种,JDBC事务(本地事物)和JTA(Java Transaction API)事务(分布式事物);

事务有四大特性ACID原子性、一致性、隔离性和持久性。

框架中,我们一般把事物交给spring来管理。spring配置事务的方式一般有两种,一个是声明式事务,一个是注解式事务。

注解事务,比较简单灵活,在spring配置文件中配置一个<tx:annotation-driven>的注解,然后在需要的方法上加@Transactional注解就可以了。

声明式事务,切点一般是扫描service层实现类,通过方法名匹配配置传播特性,决定哪些方法上加事务,哪些不需要事物。

事务主要有五大隔离级别和7种传播特性;五大隔离级别由低到高:主要控制是否出现脏读,不可重复读和幻觉读;7种传播特性主要决定是新建事务,还是取当前事务;

1、脏读:

指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中, 这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的 数据, 那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确 的。

2、不可重复读:

指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一 数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务 两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的, 因此称为是不可重复读。

3、幻觉读:

幻觉读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行 了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这 种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有 没有修改的数据行,就好像发生了幻觉一样。

事务主要是为了保证一次操作里边涉及到多次增删改时,保证他们可以同步提交或回滚。他有四大特性ACID(原子性、一致性、隔离性、持久性)

1. 原子性(Atomicity):事务是数据库逻辑工作单元,事务中包含的操作要么都执行成功,要么都执行失败。

2. 一致性(Consistency):事务执行的结果必须是使数据库数据从一个一致性状态变到另外一种一致性状态。当事务执行成功后就说数据库处于一致性状态。如果在执行过程中发生错误,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这是数据库就处于不一致状态。

3. 隔离性(Isolation):一个事务的执行过程中不能影响到其他事务的执行,即一个事务内部的操作及使用的数据对其他事务是隔离的,并发执行各个事务之间无不干扰。

4. 持续性(Durability):即一个事务执一旦提交,它对数据库数据的改变是永久性的。之后的其它操作不应该对其执行结果有任何影响。

以上,是我做项目过程对事务的一些认识,在这里记录下来,帮助有同样需求的小伙伴们,有不同看法可以评论区交流。

我是一名码龄10年的程序员,在这里会分享实在干货,让你少走弯路,成就精彩人生。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档