Grails で GORM と同一の Connection を使用する 2

前回の記事へいただいたコメントの方法で書きなおしてみました。

サンプルソースはGithubに公開しています。

 // -------------------------------------------------------------------------------

class CustomerService {
    def dataSource

    def update() {
        def sqlManager = createInstance(dataSource)
        def count = sqlManager.getCount("com/area_b/samples/select.sql")
        sqlManager.executeUpdate("com/area_b/samples/insert.sql")
        def count2 = sqlManager.getCount("com/area_b/samples/select.sql")
        def count3 = Customer.count
        print(count + ":" + count2 + ":" + count3)
    }

    def createInstance(dataSource) {
        def connectionProvider = new SpringConnectionProvider(
                transactionManager: new DataSourceTransactionManager(dataSource)
        )
        new SqlManagerImpl(
                connectionProvider: connectionProvider,
                dialect: new MySQLDialect()
        )
    }
}

 // -------------------------------------------------------------------------------

Service のフィールドにdataSourceを定義して、DIされた接続を使用。

Connection 取り出すためにゴニョゴニョしていた部分がスッキリしましたね!

※ resources.groovyに定義していた dataSource 等の記述は削除しています。

 

 

// 2013/06/10 追記 --------------------------------------------------------

@nobeans さんが、さらにスマートな方法でサンプルコードをリファクタリングしています。

はてなブログに投稿しました GrailsからMirageを使うサンプルがあったので試してみた - 豆無日記 http://t.co/w9GPxo0Uww
 
現場で知ってる人がいない技術について、コードでいろいろ教えてもらえるのは非常にありがたいです!