>>>>>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网站设计类图,并编写教师类、学生类、课程类、选课类的代码。

MVC-07 案例1的更多相关文章

  1. MVC 小案例 -- 信息管理

    前几次更新博客都是每次周日晚上到周一,这次是周一晚上开始写,肯定也是有原因的!那就是我的 Tomact 忽然报错,无法启动,错误信息如下!同时我的 win10 也崩了,重启之后连 WIFI 的标志也不 ...

  2. Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例

    Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,详细你已经有一定的Java ...

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

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

  4. spring3 jsp页面使用<form:form modelAttribute="xxxx" action="xxxx">报错,附连接数据库的spring MVC annotation 案例

    在写一个使用spring3 的form标签的例子时,一直报错,错误信息为:java.lang.IllegalStateException: Neither BindingResult nor plai ...

  5. Spring mvc简单案例

    jar包 <!--junit--><dependency> <groupId>junit</groupId> <artifactId>jun ...

  6. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 07. View的Model 和 Tag Helpers

    student添加一个属性BirthDate 然后把生成数据的地方,字段也加上 建立ViewModel list转换为ViewModel 进一步改进代码 StudentViewModel HomeIn ...

  7. MVC出错案例之一:主外键映射失败

    今天在编写DomainModel和DomainMapper,最后放到OnModelCreating中运行的时候,给我抛出了如下错误: One or more validation errors wer ...

  8. MVC登录案例

    1.在Controllers文件夹里面新建一个控制器HomeController;2.在默认的Index方法里面添加一个视图,名字跟Controller中的方法名一样叫Index,添加后的视图文件会在 ...

  9. 简单干净的C# MVC设计案例:BrothersDropdownList()

    团队切换器 在/Teams/Details?id=xxx的页面,有这样一个控件,使得不需要回到/Teams/Index就能轻松切换团队: 由于这种团队切换控件比比皆是,比如在团队故事板中(以及其他地方 ...

  10. asp.net mvc上传图片案例

    1.放在ajax.BeginForm里,不好使,同asp.net 表单中 fileupload控件不支持ajax差不多吧,如果异步的话可以借助jquery.form.js,很方便 2. //上传文件  ...

随机推荐

  1. HTML系列(九):表单

    一.表单标签form 表单标签用于申明表单,定义采集数据的范围,即<form>包含的数据将被提交到数据库上,包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单能够包 ...

  2. C++函数传值调用

    C++的函数的参数调用是传值方式. 想要改变传值调用,有引用和指针两种方式.其中,引用的实现机理也是通过一个指针,但是具体和指针传值的方式又不一样.具体见:C++中的指针与引用 对于指针传值,其实实际 ...

  3. USACO Section 5.1 Fencing the Cows(凸包)

    裸的凸包..很好写,废话不说,直接贴代码. ----------------------------------------------------------------------------- ...

  4. 做了一个图片等比缩放的js

    做了一个图片等比缩放的js 芋头 发布在view:8447   今天改了一下博客的主题,发现博客主题在ie6下变样了,后来发现是因为某篇文章里的某个图片太大了撑开了容器,导致样式错位,前几天公司需求里 ...

  5. javaTemplates-学习笔记一

    第一步,下载Java运行环境-JDK JDK -'1.8.0_25'[附链接地址] 安装JDK配置环境 安装好jdk,然后配置环境变量.不同系统配置环境变量百度Google之,附上WIN8配置方法[J ...

  6. Python正则表达式指南(转载)

    转载自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html#3353540 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不 ...

  7. 使用 Java 实现 Comet 风格的 Web 应用

    参考这个: http://www.ibm.com/developerworks/cn/web/wa-cometjava/

  8. CSS 常用自定义样式

    目录: 1. 文本单行显示,并对超出部分截断以省略号代替: 2.列布局或栅格布局:比如:左侧固定宽度,右侧占满剩下的宽度: 章节: 1. 文本单行显示,并对超出部分截断以省略号代替:参见以下代码: d ...

  9. oracle 配置监听

    LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521 ...

  10. STC15?MSP430?ARM?DSP?

    自从大学毕业以来,发现属于自己的时间越来越少,每天忙于工作,导致在大学学到的东西都好生疏,特别是大一刚开始学的模电,单片机等,现在才慢慢的抓起来,然后在这个多核处理器流行的时代,单片机貌似快过时了,但 ...