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

网站用ai做还是ps研发流程的六个阶段

网站用ai做还是ps,研发流程的六个阶段,vps挂网站,合肥网络推广公司哪家专业本文是Hibernate和JPA中基于版本的乐观并发控制的简介。 这个概念已经很老了#xff0c;上面已经写了很多东西#xff0c;但是无论如何我都看到了它被重新发明#xff0c;误解和滥用。 我在编写它只是为了传播知识#xff0c;并希望引起人们对并发控制和锁定的兴趣。 用例… 本文是Hibernate和JPA中基于版本的乐观并发控制的简介。 这个概念已经很老了上面已经写了很多东西但是无论如何我都看到了它被重新发明误解和滥用。 我在编写它只是为了传播知识并希望引起人们对并发控制和锁定的兴趣。 用例 假设我们有一个供多个用户使用的系统其中每个实体可以由多个用户修改。 我们希望避免两个人加载一些信息根据他们看到的内容做出一些决定并同时更新状态的情况。 我们不希望丢失在第一个交易中首先单击“保存”的用户通过覆盖它们所做的更改。 它也可能在服务器环境中发生–多个事务可以修改共享实体我们希望避免出现以下情况 交易1载入资料 事务2更新该数据并提交 使用在步骤1中加载的状态不再是当前状态事务1执行一些计算并更新状态 在某些方面它与不可重复的读取具有可比性。 解决方案版本控制 因此Hibernate和JPA实现了基于版本的并发控制的概念。 运作方式如下。 您可以使用Version或version 数字或时间戳标记一个简单的属性。 这将是数据库中的特殊列。 我们的映射如下所示 Entity Table(name orders) public class Order {Idprivate long id;Versionprivate int version;private String description;private String status;// ... mutators } 当这样的实体持续存在时version属性将设置为起始值。 每当更新时Hibernate都会执行如下查询 update orders set description?, status?, version? where id? and version? 请注意在最后一行 WHERE子句现在包括version 。 此值始终设置为“旧”值因此只有在具有预期版本的情况下它才会更新行。 假设有两个用户在版本1中加载订单并花一些时间在GUI中查看订单。 安妮决定批准该订单并执行该操作。 数据库中的状态已更新一切正常。 传递给update语句的版本如下 update orders set description?, status?, version2 where id? and version1 如您所见在持久化更新持久层时版本计数器将增加到2。 在她的GUI中Betty仍然具有旧版本编号1。 当她决定对订单执行更新时该语句如下所示 update orders set description?, status?, version2 where id? and version1 此时在Anne的更新之后数据库中该行的版本为2。因此第二次更新影响0行没有与WHERE子句匹配的行。 Hibernate会检测到它并检测到一个org.hibernate.StaleObjectStateException 包装在javax.persistence.OptimisticLockException 。 结果第二个用户除非刷新视图否则无法执行任何更新。 为了获得适当的用户体验我们需要进行一些干净的异常处理但是我将省略。 组态 这里几乎没有要自定义的内容。 Version属性可以是数字或时间戳。 数字是人为的但通常在内存和数据库中占用较少的字节。 时间戳较大但始终会更新为“当前时间戳”因此您可以实际使用它来确定实体的更新时间。 为什么 那为什么要使用它呢 它提供了一种方便且自动化的方式来维持上述情况下的一致性。 这意味着每个动作只能执行一次并且可以确保用户或服务器进程在制定业务决策时看到最新状态。 设置只需很少的工作。 由于其乐观的性质因此速度很快。 在任何地方都没有锁定只有一个字段添加到同一查询中。 在某种程度上即使在已提交读事务隔离级别的情况下它也可以确保可重复读。 它将以一个异常结束但是至少不可能创建不一致的状态。 它适用于非常长的对话包括跨越多个事务的对话。 在ACID数据库上的所有可能情况和竞争条件下它都是完全一致的。 更新必须是顺序更新更新涉及行锁定而“第二”更新将始终影响0行并失败。 演示版 为了演示这一点我创建了一个非常简单的Web应用程序。 它将Spring和Hibernate连接在一起在JPA API后面但是它也可以在其他设置中工作Pure Hibernate无JPA具有不同实现的JPA非webapp非Spring等。 该应用程序保留一个具有与上述类似的架构的Order 并以Web表单显示该Order 您可以在其中更新描述和状态。 要尝试并发控制请在两个选项卡中打开页面进行不同的修改并保存。 不使用Version尝试相同的Version 。 它使用嵌入式数据库因此需要最少的设置仅Web容器并且只需重新启动即可从新数据库开始。 这非常简单-在Transactional Controller访问EntityManager并直接使用JPA映射的实体支持表单。 对于不太琐碎的项目而言这可能不是最好的处理方法但是至少它将所有代码集中在一个地方并且非常容易掌握。 可以在我的GitHub存储库中找到Eclipse项目的完整源代码。 参考 在我们的JCG合作伙伴 Konrad Garus的Squirrel博客上JPA / Hibernate中基于版本的乐观并发控制 。 翻译自: https://www.javacodegeeks.com/2012/11/jpahibernate-version-based-optimistic-concurrency-control.html
http://www.huolong8.cn/news/4998/

相关文章:

  • 手机建设银行网站o2o网站建设资讯
  • 东莞网站建设定制服务周到的微网站建设
  • 静态网站入侵教程wordpress shopy主题
  • 织梦者网站模板衡水做网站找谁
  • qingdao城乡住房建设厅网站贵阳做网站建设最好的是哪家
  • 郑州大型网站建设临沂网站推广排名
  • 深圳网站设计x沈阳关键词seo排名
  • 外贸类网站建设网络营销策划方案1500字
  • 怎么制作网站准考证在网上打印个人主页源码下载
  • 企业网站建设投标书做pc端网站价位
  • 违规网站开发 开发者如何规避风险网店运营流程步骤
  • 网站是生成静态好还是动态好平台建站建设
  • 企业所得税怎么算举例深圳短视频seo教程
  • 东城网站建设哪家好品牌营销策划ppt
  • 免费推广软件排行榜苏州推广关键词优化
  • 怎样做好网站用户体验网站建设工作量评估报价表
  • 深圳前50强网站建设公司做网站什么分类流量多
  • 网站建设项目招标公告北京专业网站设计推荐
  • 做网站怎么接业务泰安网站制作公司电话
  • 创建网站域名多少钱长沙网络推广哪家
  • 网站网站建设网站上面的彩票快3怎么做
  • 湛江高端网站开发google play
  • 南昌定制网站开发wordpress 3d标签云
  • 五金外贸网站模板浙江品牌网站建设
  • 网站建设与O2O的应用长春新增2个高风险地区
  • 郑州网站建设 华数个人网站做推广
  • 网站建设crmwordpress 不能改邮箱
  • 网站外网访问怎么做路由器端口映射免费文字变形logo设计
  • 在哪下载免费的英文版网站模板佟年帮韩商言做网站是第几集
  • 网站建设有哪些类型国外网站网站