Java Web程序设计教程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
11.5.2 Bean的装配—添加属性(2) 为Bean添加List类型属性和Set类型属性的格式相同 。以添加List类型属性为例,示例如下 bean id=user class=sunyang.Spring.User property name=name list valueSunYang/value valueSpring/value valueIoC/value /list /property /bean 这里为bean添加了一个list类型的属性 “name”,值为“SunYang”,“Spring”和“IoC”。 11.5.2 Bean的装配—添加属性(3) 为Bean添加Map类型属性,示例如下 bean id=user class=sunyang.Spring.User property name=name map entry keyvaluename/value/key valueJohn/value /entry entry keyvaluepassword/value/key value1234/value /entry /map /property /bean 为Bean添加Map类型属性时,必须同时声明key和value。 11.5.2 Bean的装配—添加属性(4) 引用其他Bean。示例如下 bean id=man class=sunyang.Spring.Man / bean id=user class=sunyang.Spring.User property name=man ref bean=man/ /property /bean 这里在user对应的Bean中引用了man对应的Bean。 返回 10.2 并发控制 在Hibernate应用中,并发主要是指是同一个时间段内多个事务共同请求同一个资源 。对于并发如果不进行相应的控制,将产生一系列问题。 并发问题 解决方案 返回 10.2.1 并发控制—并发问题(1) 第一类丢失更新。当两个或多个事务同时更新同一资源时,第一个事务已经更新了数据,而第二个事务由于被中断而撤销了事务,导致第一个事务也被撤销,那么数据将恢复到初始状态。 脏读。当两个或者多个事务同时操作一个资源时,第一个事务更新了数据但未提交,此时第二个事务读取了该条数据并进行了处理。此时第一个事务由于某种原因被撤销了,那么第二个事务处理的数据就称为脏数据。 虚读。虚读是由于当前的一个事务查询到了另一个事务新插入的数据而引起的。当第一个事务查询了数据库的记录数时,第二个事务向数据库中增加了一条记录,改变了当前的记录数目,那么第一个事务获得的数据就是虚读的数据,该数据与数据库中的实际数据不相同。 10.2.1 并发控制—并发问题(2) 不可重复读。当第一个事务修改数据时,第二个事务在它的提交事务的前后,两次读取了第一个事务所修改的数据,导致第二个事务两次读取的数据不匹配 。 第二类丢失更新 。第二类丢失更新是不可重复读的一个特例。当多个事务同时读取到了一条资源记录,分别根据自身的逻辑进行处理,最后分别提交事务。问题发生在最后提交的事务将会覆盖前面所有已经提交的事务的数据,导致最终的数据完整性被破坏 。 返回 10.2.2 并发控制—解决方案(1) 为了解决在事务并发过程中出现的问题,Hibernate提供了一种特殊的处理方式——锁。锁有两种形式:悲观锁和乐观锁。 悲观锁。认为所有的事务都在请求当前事务正在处理的资源,因此将正在处理数据资源上锁,其他所有事务都不可以访问上锁的资源。只有当前的事务提交后,其他事务才可以访问刚刚被锁定的数据。 Query类和Criteria类的setLockMode()方法及Session类的load()和lock()方法都可以进行加锁 。锁定模式如下 10.2.2 并发控制—解决方案(2) 10.2.2 并发控制—解决方案(3) 乐观锁。认为访问数据库的事务很少发生数据访问错误等问题。当数据出现了不一致状态时,Hibernate采用版本检查和时间戳等技术来实现读取数据。 1)版本控制。版本控制技术是在操作的数据表中增加一个版本号字段,习惯上将该版本号命名为version。当一个新事务到来时,首先加载版本号,如果版本号和数据库中的版本号相等,那么允许事务进行数据操作,否则给出警告信息,数据操作人员可以选择继续还是放弃当前的操作。 版本控制使用方法: a)在数据表中增加版本控制字段,例如增加int类型的version字段 。 b)在该表对应的持久化类中增加int类型的属

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档