似乎很简单
type Db[F[_], A] = Kleisli[F, Connection, A]
type Transactor[DB[_], F[_]] = DB ~> F
С也可用于构建功能性JDBC层
答案 0 :(得分:4)
总结来自https://gitter.im/scala/scala?at=5cfe6505bf4cbd167c619960的@SystemFw和@tpolecat答案
免费Monad的优点:
F[_]
,因此不能在事务边界内使用不合适的(异步)效果。这很重要,因为大多数JDBC驱动程序已将java.sql.Connection
实现设计为单线程。免费Monad的缺点:
F[_]
,因此您不能在交易中嵌套特定的效果。Doobie将来将具有无标签版本。