2016-03-29 11 views
2

açık bağımlılık olmadan işlemleri yönetin Scalikejdbc bir doküman istiyorum anladığım kadarıyla bir işlem yapmak istiyorum. Şunun gibi:Scalikejdbc. Scalikejdbc ve oturum

class FooBarService { 

    val fooDao = new FooDao 
    val barDao = new BarDao 

    def fooBar(): Unit = { 
     DB localTx { session => 
     fooDao.foo(new Foo()) 
     barDao.bar(new Bar()) 
     } 
    } 
    } 

    class FooDao { 
    def foo(foo: Foo)(implicit session: DBSession): Unit = { 
     sql"""bla bla bla""" 
    } 
    } 

    class BarDao { 
    def bar(bar: Bar)(implicit session: DBSession): Unit = { 
     sql"""bla bla bla""" 
    } 
    } 

Ve o şey Scalikejdbc üzerinde beni açıkça bağımlı hale getirir. Alan özelliklerinde Scalike'a bağımlı kalmak istemiyorum.

class FooBarService { 

    val fooDao = new FooDao 
    val barDao = new BarDao 

    def fooBar(): Unit = { 
     // My wrapper which abstract and is not dependent on Scalike or other library 
     MyWrapper.withinTransaction { 
     fooDao.foo(new Foo()) 
     barDao.bar(new Bar()) 
    } 
     // or at least not to pass session to daos 
     DB withinTransaction { 
     fooDao.foo(new Foo()) 
     barDao.bar(new Bar()) 
     } 
    } 
    } 

    class FooDao { 
    def foo(foo: Foo): Unit = { 
     sql"""bla bla bla""" 
    } 
    } 

    class BarDao { 
    def bar(bar: Bar): Unit = { 
     sql"""bla bla bla""" 
    } 
    } 

işlemleri yapmak ve sınıf imza oturum sayısına ve scalike üzerinde bağımlılıkları yok bir yolu var mı: Böyle bir şey İstediğim nedir?

+0

Hiç bir çözüm bulmak mı? – jen

+0

@jen no. Slick’e geçtik. Scalikejdbc ve işlemleri beni rahatsız etti çünkü yöntemlerimin imzalarına üçüncü taraf bağımlılığı eklemek istemedim. Slick'in biraz benzer sorunları var (eğer bunları işlem içinde birleştirmek istiyorsak DBIOAction'ı açığa çıkarmalıyız), ama şimdi bunun bir problem olmadığını düşünüyorum. –

cevap

İlgili konular