サービスメソッドでデータベース呼び出しを定義したいのですがTransaction
、サービス自体で接続を開かずにクラスのコンテキストで実行して、同じトランザクションに複数のサービス呼び出しを含めることができるようにします。
このようなものを探していますが、よくわかりません。
class Transaction {
init { /** Grab connection **/ }
fun doSelect() { ... }
}
class UserService {
fun Transaction.getUser() {
return doSelect()
}
}
fun main (args: Array<String>) {
Transaction() {
UserService().getUser() // INVALID
...
}
}
これを行う方法はありますか?
次のように、トランザクション インスタンスをサービスに渡すことができることを知っています。
class UserService(tx: Transaction) {
fun getUser() {
with(tx) {
doSelect()
}
}
...
fun main (args: Array<String>) {
Transaction() {
UserService(this).getUser()
...
}
}
...しかし、よりエレガントなパターンを望んでいます。