gpt4 book ai didi

scala - 鳞状的jdbc。在不显式依赖 Scalikejdbc 和 session 的情况下管理事务

转载 作者:行者123 更新时间:2023-12-05 07:50:21 25 4
gpt4 key购买 nike

据我从 Scalikejdbc 的文档中了解到,如果我想要进行交易,我需要通过 session 。像这样:

  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"""
}
}

那件事让我明确地依赖于 Scalikejdbc。我不想在我的领域特征中依赖 Scalike。我想要的是这样的:

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"""
}
}

有没有办法在类签名中拥有事务并且不依赖于 session 和 scalike?

最佳答案

关于scala - 鳞状的jdbc。在不显式依赖 Scalikejdbc 和 session 的情况下管理事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36279183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com