按客户需求,昨天我们的程序从dropbox上获取内容,dropbox的目录遍历耗时长,从日志看有的账户需要30多秒。
如是前一次请求没有结束,后一次请求又来了,两次请求同时操作一条记录时,出现如下错误:
[ERROR] api Exception: Object of class [com.friendmedia.commercial.Screen] with identifier [55]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.friendmedia.commercial.Screen#55]
通过寻找资料得知,这是hiberate自己做的优化,默认给记录加了乐观锁,写入时发现数据库中version的版本和缓存的不一致时,会抛出以上异常。
可以通过如下办法解决:
Screen screen = Screen.findByMac('00-0d-a8-80-21-ee', [lock: true]); screen.program = (program as JSON).toString(); screen.save(flush: true);
这里给记录加上了一个悲观锁,在操作记录时不允许别人读,update操作执行完后,锁将释放。更多详情:
http://grails.org/doc/2.0.x/guide/single.html#locking
相关推荐
Views 是 Grails 应用程序中的用户界面部分,通常使用 Groovy Server Pages (GSP) 文件编写。GSP 结合了 HTML、CSS 和 JavaScript 以及 Groovy 语法,允许动态生成页面内容。 **Services** Services 是可重用的...
Grails兼容广泛的Java应用服务器,包括但不限于Apache Tomcat、Jetty、Resin等,这使得Grails应用能在不同的环境中无缝运行。 8. **创建工件** Grails提供了多种命令用于生成模型类、控制器、服务等工件,如`...
GORM中的高级特性包括自定义映射选项、事务编程以及乐观锁和悲观锁等并发控制机制。 在Web层的开发中,Grails提供了灵活的控制器来处理请求和响应。它还包含了Groovy Server Pages(GSP),这是一种基于Groovy的...
【标题】:“Grails学习记录” 【描述】:在学习Grails的过程中,我们可以发现这是一个基于Groovy语言的、用于构建Web应用的开源框架。通过博文链接(https://loven-11.iteye.com/blog/544143)我们可以获取到作者...
Grails1.1中文文档
2. MVC架构:Grails遵循Model-View-Controller(MVC)设计模式,通过GORM(Grails Object Relational Mapping)进行数据访问,使用GSP(Groovy Server Pages)作为视图模板,Controller负责业务逻辑处理。...
现在主流的Java Web框架也是异常复杂,而且没有很好的遵循 Don't Repeat Yourself (DRY) 法则。 因此我们要以一种新的思维方式来重新思考Web开发,Rails、Django和TurboGears这样的动态框架给我们铺平了道路。...
- Grails版本信息可以在项目的`BuildConfig.groovy`文件中找到。 **文档引擎** - 提供了文档生成工具,帮助开发者快速生成API文档。 **依赖解析** - Grails使用Ivy作为其依赖管理系统。 - 支持配置依赖关系,包括...
在Grails中,领域模型是应用程序的核心,它代表了业务数据和逻辑。通过定义Groovy类并使用Grails的GORM(Grails Object Relational Mapping)来与数据库交互,可以轻松实现数据持久化。 4. **控制器(Controllers...
1. **模型(Model)**: 在Grails中,模型通常由Domain Classes表示,它们是持久化的实体,与数据库表对应。Domain Classes使用Groovy的元编程特性,如属性验证和动态方法,提供数据验证和业务逻辑。 2. **视图...
Grails 最新的 v1.1版的中文文档,chm格式,Grails是一套快速开发Web应用的开源框架,基于Groovy编程语言,并构建于Spring、Hibernate和其它标准Java框架之上,能为大家带来超高效率的一站式框架。
以下是对Grails中上传和下载操作的深入解析,包括其实现机制、代码示例及注意事项。 ### 文件上传 #### 上传原理 在Grails中,文件上传主要依赖于Spring框架提供的`MultipartHttpServletRequest`接口,该接口用于...
3. **GORM 数据库访问**:Grails 的 GORM(Grailed Object Relational Mapping)提供了一个简单易用的 ORM 解决方案,用于与数据库交互。通过注解和动态方法,你可以轻松操作数据。 4. **Grails 控制器**:学习如何...
- 在Eclipse的classpath variable中设置`GRAILS_HOME`变量,指向Grails的安装目录,避免在创建或导入项目时手动添加库文件。 - 在`Windows -> Preferences -> Groovy`中,勾选"Disable Groovy Compiler Generating...
在Grails中,Controller处理请求,View呈现结果,Model则存储和管理业务数据。 3. **GORM(Grails Object-Relational Mapping)**:Grails的内置ORM工具,允许开发者以声明式的方式操作数据库,支持SQL的CRUD操作,...
在学习过程中,还可以参考在线教程、视频课程和社区论坛,如Stack Overflow和Grails官方社区,以便获取更多实践经验和帮助。 总之,Grails作为Java平台上的快速Web开发框架,以其高效、灵活和丰富的生态系统,为...
3. **GRAILS ORM(Object Relational Mapping)**:Grails ORM 提供了ActiveRecord、DataBinding和Criteria查询等模式,简化了数据访问和管理。 4. **GSP(Grails Server Pages)**:类似于JSP的视图层技术,GSP...
Grails 是一个高效的开源 Web 应用框架,它集成了 Java 开发中广泛使用的成熟技术,如 Spring 和 Hibernate。然而,Grails 不仅仅是对这些技术的简单组合,它提供了一种全新的开发体验。通过执行 `grails create-app...