grails脚手架在任何方面都是事务性的吗?

grails脚手架在任何方面都是事务性的吗?,grails,transactions,scaffolding,Grails,Transactions,Scaffolding,我查看了Controller.groovy源代码,看起来CRUD操作不是事务性的(至少是显式的) 如果我是对的,这是否意味着动态脚手架不应该在生产中使用?是否有一种方法可以使其具有事务性(即,我可以修改Controller.groovy或其他什么?) 你是对的,脚手架不是事务性的。这可能是因为grails和hibernate支持不支持事务的数据源,例如MySQL的MyISAM引擎 您可以将其更改为事务性,如下所示: 运行grails安装模板 编辑src/templates/scaffolding

我查看了
Controller.groovy
源代码,看起来CRUD操作不是事务性的(至少是显式的)


如果我是对的,这是否意味着动态脚手架不应该在生产中使用?是否有一种方法可以使其具有事务性(即,我可以修改
Controller.groovy
或其他什么?)

你是对的,脚手架不是事务性的。这可能是因为grails和hibernate支持不支持事务的数据源,例如MySQL的MyISAM引擎

您可以将其更改为事务性,如下所示:

  • 运行
    grails安装模板
  • 编辑
    src/templates/scaffolding/Controller.groovy

  • Grails将此模板用于
    生成控制器
    或在动态生成脚手架控制器时使用。

    虽然这在技术上是正确的,但在控制器中执行事务工作并不是真正的最佳实践。所有事务性工作都应该在服务中完成。轻轻使用脚手架。不要将脚手架代码投入到生产中。我不同意脚手架本身有什么不好或不适合生产的地方。通过使用脚手架(我不是假设开箱即用,而是已经做了一些修改)。脚手架为您带来了巨大的可维护性胜利,如果有的话,还迫使您保持控制器精简。服务层中的事务是最佳实践,但我不会仅仅为了事务性而将CRUD操作移动到服务中。此外,脚手架是一种功能强大的方式,可以为管理提供简单的CRUD接口,只需最少的代码和工作量,并且适用于广泛的应用程序。将事务性代码放入控制器不止一次地让我感到困惑,所以我们同意不同意。