Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自TagLib的Grails服务调用开销_Grails_Service_Taglib_Overhead_Method Call - Fatal编程技术网

来自TagLib的Grails服务调用开销

来自TagLib的Grails服务调用开销,grails,service,taglib,overhead,method-call,Grails,Service,Taglib,Overhead,Method Call,我有一个非常简单的标记库和服务: class TestTagLib { FooService fooService static namespace = "bar" def test = { out << "text" } } class FooService { //This is an empty method that does absolutely nothing void foo() { } } 类Te

我有一个非常简单的标记库和服务:

class TestTagLib {
    FooService fooService

    static namespace = "bar"

    def test = {
        out << "text"
    }
}

class FooService {
    //This is an empty method that does absolutely nothing
    void foo() { }
}
类TestTagLib{
食品服务食品服务
静态名称空间=“bar”
def测试={

out服务方法在默认情况下是事务性的。因此,对于
fooService.foo()
的每次调用,您将获得完整数据库事务创建和提交的开销。

服务方法在默认情况下是事务性的。因此,对于
fooService.foo()的每次调用
您将获得一个完整的数据库事务创建和提交的开销。

我想这取决于您在foo()中所做的工作:-)正如我在示例中所说的,它实际上什么都没有做。它是一个空方法。我想这取决于您在foo()中所做的工作:-)正如我在示例中所说的,它实际上什么也不做。它是一个空方法。在这种情况下,如何使一个方法事务性地只读或根本不事务性?我最后在没有插入/删除的服务上设置了static transactional=false,如果我在方法级别需要它,我就使用@transactional(propagation=propagation.NEVER)(将传播设置为您需要的任何内容,这里是javadoc)。这很有魅力。谢谢!我倾向于尽可能多地使用注释。它还允许将某些方法标记为只读。然后hibernate可以做出更智能的优化决策。在这种情况下,您如何使方法事务性地只读还是完全不事务性?我最后提出了静态事务性对于没有插入/删除的服务,l=false,如果我在方法级别需要它,我使用@Transactional(propagation=propagation.NEVER)(将propagation设置为您需要的任何值,这里是javadoc)。这很有魅力。谢谢!我倾向于尽可能多地使用注释。它还允许将某些方法标记为只读。然后hibernate可以做出更智能的优化决策。
...

fooService.foo()
out << "test"

...