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 さんが、さらにスマートな方法でサンプルコードをリファクタリングしています。