Grails中与数据库相关的代码放在哪里

Grails中与数据库相关的代码放在哪里,grails,grails-2.0,Grails,Grails 2.0,我有一段连接到数据库并执行查询的代码,我不清楚该代码的位置(模型/服务) 我有一个名为ApplicationConfiguration的类,我正在这个域上查询 我有两个疑问 1) 将数据库连接逻辑放在何处 2) 在哪里放置查询执行逻辑查询执行在服务端进行 视图与控制器交互,这个视图与服务交互,最后一个视图与DB的数据交互,DB将其映射到定义的模型对象 数据库连接登录在DataSource.groovy con/Conf上进行 DataSource { pooled = true driverCl

我有一段连接到数据库并执行查询的代码,我不清楚该代码的位置(模型/服务)

我有一个名为ApplicationConfiguration的类,我正在这个域上查询

我有两个疑问

1) 将数据库连接逻辑放在何处
2) 在哪里放置查询执行逻辑

查询执行在服务端进行

视图与控制器交互,这个视图与服务交互,最后一个视图与DB的数据交互,DB将其映射到定义的模型对象

数据库连接登录在DataSource.groovy con/Conf上进行

DataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
}
hibernate {
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider'
}
// environment specific settings
environments {
development {
    dataSource {
        dbCreate = "update" // one of 'create', 'create-drop','update'
        url = "jdbc:mysql://localhost:3306/"
        username=""
        password=""
    }
}
test {
    dataSource {
        dbCreate = "update"
        url = "jdbc:mysql://localhost:3306/"
        username=""
        password=""

    }
}
production {
    dataSource {
        dbCreate = "update"
        jndiName = "java:comp/env/"
    }
}
}

如果您还没有创建一个域对象来表示<代码> AppultIsPosie,您应该考虑一下,并且使用./P> 如果您需要在GORM之外执行查询,它可能应该进入服务中。请注意,数据源对象可以自动注入到您的服务中,并且可以直接从中创建Sql对象。你可以有这样的东西:

import groovy.sql.Sql

class ApplicationConfigurationService {
    def dataSource

    def valueForName(name) {
        def sql = new Sql(dataSource)

        sql.eachRow(...) {
            value=it.field_value
        }
    }
}

另外,不需要使用Groovy SQL对象执行,您可以直接与域对象交互,例如
applicationconfiguration.list{eq“fieldName”,value}
import groovy.sql.Sql

class ApplicationConfigurationService {
    def dataSource

    def valueForName(name) {
        def sql = new Sql(dataSource)

        sql.eachRow(...) {
            value=it.field_value
        }
    }
}