>>>>>ContosoUniversity网站

-------------------------------------------

一、并发冲突

1. 为什么会并发冲突?

l并发冲突的例子
•假设你想在网上订机票。查询你的航班,发现还有座位,但是当你单击预订按钮时,系统提示机票已售罄。如果再次查询该航班,发现已经没有座位了。这是怎么回事呢?原来是在你查询到结果和预订之间,其他人预订了最后一张票。系统对最后一张票进行了并发查询,如果没有并发检查,该航班的机票就会超额预订。
从技术上来说,程序中的每个可编辑的实体都存在争用的情况。但是在现实世界中,有非常少的数据受到争用,常常不是太重要而不值得并发检查。
•例如,

订单?

客户和供应商?

产品的价格和库存量?

l并发更新、并发删除
l数据库是共享式的。
l对同一资源的访问,造成并发冲突,数据意外丢失。

2. 并发冲突的类型?

(1)悲观并发控制(Pessimistic Concurrency)
    以独占方式物理锁定数据库中的数据,当数据被锁定,其他用户就不能再访问它了,读取或更新都不行,直到数据被更新或者解除锁定。
ü好处是它允许单个用户以独占方式访问信息,消除了任何可能的争用。
ü但从性能和使用上来说以独占方式锁定会产生很多并发症状。

—影响他人效率

—如果程序奔溃

悲观并发背后的理念是因为数据可能存在争用,数据由第一个读取者锁定。解决并发问题的另一个技术是反其道而行之:因为数据并不频繁争用,锁定数据是没有意义的,我们让争用检查只在更新阶段执行。

(2)乐观并发控制(Optimistic Concurrency)
•允许冲突发生,设置相应的处理机制或通知用户。
•当更新数据库时,必须检查自从检索了数据起它就没有发生变化。
•对系部信息的编辑,如果预算原来为3500,John修改为0;在John按保存之前,Jane更改了系建立日期从2007年9月1日到2013年8月8日。冲突产生。。。
ü处理方法:

—跟踪用户已修改的属性,只更新数据库中的相应的列。两个人的修改都保存到数据库。

—客户端赢或最后一个赢。Jane的更改覆盖John的更改。不需要编码,自动发生。

—存储区赢。John的更改覆盖Jane的更改。我们即将讲解如何实现。

乐观并发提升了系统的可扩展性和可使用性,因为数据总是可读取的。主要的缺点是除非你写一些复杂的代码,否则得到并发异常的用户必须重新读取更新数据,然后应用修改。通常浪费的时间是可接受的,有时不是。

检测并发冲突

l通过引发OptimisticConcurrencyException异常处理来解决冲突。
•为每一行的修改添加一个版本控制列。在并发修改的情况下,第一个保存的数据成功,其他的就不能更新数据,因为自从读取了数据,版本已经发生了变化。
•在Update和Delete命令的Where子句中,检查版本。
二、Lazy、 Eager,和Explicit加载的相关数据

(1)Lazy loading

  • 实体读取时,并不加载数据,使用时加载数据。掌握代码。熟记样例代码。

(2)Eager Loading

  • 实体读取时,获取相关数据。熟记样例代码。

(3)Explicit Loading

l实体读取时,获取相关数据。熟记样例代码。
 三、请为ContosoUniversity网站设计类图,并编写教师类、学生类、课程类、选课类的代码。

转载于:https://www.cnblogs.com/meetyy/p/3483106.html

MVC-07 案例1相关推荐

  1. ExtJS学习:MVC模式案例(三)

    在ExtJS案例系列教程的前两讲,我们了解了该案例的最终实现效果,并且在ExtJS学习:MVC模式案例(二)中我们添加Viewport.js和demoController.js两个文件,实现了对整个网 ...

  2. Kubernetes中分布式存储Rook-Ceph的使用:一个ASP.NET Core MVC的案例

    在<Kubernetes中分布式存储Rook-Ceph部署快速演练>文章中,我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程,这里介绍如何在部署于Kubernete ...

  3. 07 | 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(上)

    上一节,我用一个 Nginx+PHP 的案例,给你讲了服务器 CPU 使用率高的分析和应对方法.这里你一定要记得,当碰到无法解释的 CPU 使用率问题时,先要检查一下是不是短时应用在捣鬼. 短时应用的 ...

  4. ExtJS学习:MVC模式案例(一)

     http://www.lihuai.net/qianduan/extjs/457.html http://www.lihuai.net/qianduan/extjs/1050.html

  5. ASP.NET MVC (一)

    工作清闲好一段时间了,趁这段时间弄了弄PHP,做个了简单的MVC网页.玩了玩Android,弄了个拨号器,发短信的,嘿嘿,最满意的还是两天弄了个数独游戏.不务正业一个多月了,也该磨磨刀,接下来一段时间 ...

  6. 30分钟轻松入门Spring MVC

    Spring MVC框架入门学习步骤 1.了解Spring MVC基本慨念, 是什么?,能干什么? 2.Spring MVC核心组件.底层实现原理 3.Spring MVC实际开发, 基于XML方式. ...

  7. asp.net MVC留言本示例

    最近项目完成有一段空闲的时间 写了个MVC的留言本发出来分享给大家 1项目是用vs2010开发的 2数据文件是XML的 3使用时请先修改XLMessages\XLMessages\Models\DBA ...

  8. 我的java学习之路之Spring MVC

    前言:从学习java web开始到现在开始学习框架,也有了小半年的时间.这期间的状态也是半懂不懂,好多东西知道代码怎么写,但是却说不出来是什么,所以想通过这样的方式记录下来,让自己印象更加深刻点 ps ...

  9. PHP实现简易的MVC框架

    目录 一.前言 二.哪些框架使用到了mvc架构? 三.框架结构简介 四.框架实现第一步(解析路由) 4.1 写入口文件 4.2 定义Core核心类 五.框架实现第二步(MVC的实现) 5.1 控制器的 ...

  10. 基于 MVC 模式实现简单 航班查询系统

    文章目录 一.前言 二.功能要求: 三.代码展示: View: Model层: Cotroller层: 四.效果展示: 后记: 一.前言 本文 MVC 模式的一个简单案例,可以作为 练习 MVC 模式 ...

最新文章

  1. hdu 5501(贪心+01背包)
  2. 显示多文档标签_HTML常用基础标签,前端从入门到精通
  3. 用SQL Server Compact Edition创建移动应用程序 【转载】
  4. JS Ajax异步请求发送列表数据后面多了[]
  5. python http get 请求_Python-Http请求库-Requests and AIOHTTP的使用
  6. Opencv透视变换——cv::getPerspectiveTransform()与cv::warpPerspective()详解
  7. mysql 表连接 on_MysQL中表连接中“using”和“on”之间的区别是什么?
  8. 细数国内无人机的江湖门派
  9. HTML实现个人简历
  10. 【染上你的颜色】MMD动作+镜头下载
  11. MYSQL LEFT JOIN 的怪异行为
  12. 【案例练习】17个华丽的UI效果的实现 ,激发你的创造灵感
  13. 【数据结构Python描述】手动实现一个list列表类并分析常用操作时间复杂度
  14. 瞬时: lnstant
  15. 利用opencv带你玩转人脸识别-下篇(人脸录入,数据训练,人脸识别小案例快速入门)
  16. 阿里云服务器购买指南(适合新手小白的图文指导教程)
  17. [转贴] meizz (梅花雨)的一些珍藏代码奉献
  18. Https证书制作方法
  19. Confluence 6 设置你的个人空间主页
  20. ESXI虚拟机下安装 All in One系统

热门文章

  1. 心电图心电轴怎么计算_浅谈心电图
  2. java groovy jar包_如何将jar包包含在groovy脚本中?
  3. command not found: ls_内饰更加奢华 新款雷克萨斯LS将于广州车展亮相
  4. 什么时候会引起索引失效
  5. 002_Spring Data JPA CRUD
  6. 058_Unicode字符官方标准九
  7. 002_模板 + 数据模型 = 输出
  8. dede php 常用,dede cms常用标签汇总 收藏版
  9. Oracle数据库查看表空间sql语句、查看Oracle数据库表空间剩余 、修改表空间、库备份
  10. mysql忘记密麻麻_mysql忘记密码怎么办