gpt4 book ai didi

scala - 为什么 Doobie 使用免费 monad?

转载 作者:行者123 更新时间:2023-12-04 19:26:06 26 4
gpt4 key购买 nike

好像很简单

type Db[F[_], A] = Kleisli[F, Connection, A]
type Transactor[DB[_], F[_]] = DB ~> F

也可用于构建功能性 JDBC 层

最佳答案

总结来自@SystemFw 和@tpolecat 的回答 https://gitter.im/scala/scala?at=5cfe6505bf4cbd167c619960

免费 Monad 的优点:

  • 客户端代码无权访问 Connection 实例,因此不能泄漏它
  • 没有用户的F[_]因此不能在事务边界内使用不正确的(异步)效果。这很重要,因为大多数 JDBC 驱动程序都设计了 java.sql.Connection实现是单线程的。

  • 免费 Monad 的缺点:
  • 客户端代码无法访问 Connection,因此无法使用替代 ORM(如 JOOQ)
  • 没有用户的F[_]所以你不能在事务中嵌套特定的效果。

  • Doobie 将来会有无标签版本。

    关于scala - 为什么 Doobie 使用免费 monad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56524454/

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