我是clojure的新手。我想从数据库中获取带有字段的 x 记录,并想将记录插入数据库。在这种情况下,defrecord
我应该使用哪一次?defschema
那些是一样的吗?
我是clojure的新手。我想从数据库中获取带有字段的 x 记录,并想将记录插入数据库。在这种情况下,defrecord
我应该使用哪一次?defschema
那些是一样的吗?
defschema
并且defrecord
不要参考数据库模式(“数据库的形状”)或记录(即关系数据库中的行)。
Schema是一个库,用于描述数据的形状,并验证某些数据是否符合这种形状。它类似于最近的clojure.spec。Clojure记录是自定义数据类型,看起来有点像 Java 类。
很容易想为每个实体编写带有记录的“面向对象”数据库通信。但是,所有数据库包含的都是数据,它只是列表、映射、集合和一些基本的数据类型。我建议您将数据保存在内置的 Clojure 数据结构中,随时可用,并且不要将其隐藏在不必要的抽象中。(旁注:您的 DB组件,而不是 DB 实体,很可能是 Clojure 记录。例如,组件的生命周期管理使用记录。)
Honey SQL是一个不错的起点,它允许您将 SQL 查询构建为 Clojure 数据结构。您可以取回数据,并可以使用 Clojure 的全部功能对这些数据进行操作。
然后,当您对“开放所有数据(不进行封装)”感到满意时,去描述数据的形状,什么是有效的,什么是无效的。clojure.spec
是一个强大的工具。