Mirage を Grails で使う
Mirage(※1)というORMをGrailsで使えるようにするための方法を記します。
(GORMと同一のConnectionを使用する方法はコチラ)
作成したサンプルはGithubに公開しています。
コードレビューしていただけると、泣いて喜びます。
■ Mirageのダウンロード
BuildConfig.groovyに下記の設定を行う。
・repositories に 「mavenRepo "http://amateras.sourceforge.jp/mvn/"」を追記
・dependencies に 「compile 'jp.sf.amateras.mirage:mirage:1.1.6'」を追記
■ DIのための設定
resources.groovyを下記のように編集。
// -------------------------------------------------------------------
beans = {
dataSource(org.apache.commons.dbcp.BasicDataSource) { bean ->
bean.destroyMethod = 'close'
driverClassName = '${dataSource.driverClassName}'
url = '${dataSource.url}'
username = '${dataSource.username}'
password = '${dataSource.password}'
}
transactionManager(org.springframework.jdbc.datasource.DataSourceTransactionManager) {
dataSource = dataSource
}
connectionProvider(jp.sf.amateras.mirage.integration.spring.SpringConnectionProvider) {
transactionManager = transactionManager
}
dialect(jp.sf.amateras.mirage.dialect.MySQLDialect)
sqlManager(jp.sf.amateras.mirage.SqlManagerImpl) {
connectionProvider = connectionProvider
dialect = dialect
}
}
// -------------------------------------------------------------------
上記設定により、Grails でDI可能になります。また、トランザクション管理はGrailsが行ってくれるようになります。(デフォルトはServiceがトランザクション境界となります)
■ Serviceでの使用方法
以下のように使用できます。
// -------------------------------------------------------------------
class CustomerService {
SqlManager sqlManager
def list() {
return sqlManager.getResultList(
Customer.class, "com/area_b/samples/select.sql");
}
}
// -------------------------------------------------------------------
SQLファイルは ProjectRoot/src/java 下にパッケージを切って配備しています。
以上でMirageが使用可能となります。
Mirageかわいいよ Mirage
※1.Mirage とは
JavaのO/Rマッパ。2WaySQLの記述方法を用いた外部SQLを読み込み、実行可能。もちろん、Entityにアノテーションベースのメタ情報を設定することによりSQLレスでCRUDも可能。