Groovy SQL:我应该手动关闭Mysql连接

时间:2016-02-03 14:38:25

标签: mysql grails groovy

我有一个使用Groovy SQL调用存储过程的grails服务。 我正在使用dataSource来初始化连接。 我的问题是:我是否需要手动关闭连接,还是由Groovy或GORM处理(因为我使用的是def dataSource)?

以下是我的服务结构。

class MyService {

    static transactional = Boolean.FALSE

    private static final String STATEMENT_ONE_SQL = "{ call sp_One(?) }"

    private static final String STATEMENT_TWO_SQL = "{ call sp_Two(?,?) }"

    def dataSource

    Sql sql

    @PostConstruct
    def initSql() {
       sql = new Sql(dataSource)
    }

    List<GroovyRowResult> callSpOne(Integer id) {
        List<GroovyRowResult> results = sql.rows(STATEMENT_ONE_SQL, [id])
        return results
    }

    List<GroovyRowResult> callSpTwo(Integer id, String name) {
         List<GroovyRowResult> results = sql.rows(STATEMENT_TWO_SQL, [id, name])
         return results
    }

1 个答案:

答案 0 :(得分:1)

基于官方docs

  

最后,我们应该清理:

sql.close()
  

如果我们使用DataSource并且我们没有启用语句缓存,那么严格来说不需要最后的close()方法 - 因为所有连接处理都是代表我们透明地执行的;但是,把它放在那里并没有什么坏处,因为它会在那种情况下默默地返回。

     

如果使用withInstance代替newInstance,则会自动为您调用close()。