Clojure:defrecord和defschema之间的差异
我对clojure不熟悉。我想从数据库中获取带有字段的x条记录,并想将记录插入数据库。在这个场景中,我应该在Clojure:defrecord和defschema之间的差异,clojure,compojure,compojure-api,Clojure,Compojure,Compojure Api,我对clojure不熟悉。我想从数据库中获取带有字段的x条记录,并想将记录插入数据库。在这个场景中,我应该在defrecord和defschema之间使用哪一次 它们是否相同?defschema和defsrecord不涉及数据库模式(“数据库的形状”)或记录(即关系数据库中的行) 是一个库,用于描述数据的形状,并验证某些数据是否符合此形状。它与最近的类似。Clojure记录是定制的数据类型,看起来有点像Java类 很容易尝试编写“面向对象”的数据库通信,其中包含每个实体的记录。然而,所有数据库包
defrecord
和defschema
之间使用哪一次
它们是否相同?
defschema
和defsrecord
不涉及数据库模式(“数据库的形状”)或记录(即关系数据库中的行)
是一个库,用于描述数据的形状,并验证某些数据是否符合此形状。它与最近的类似。Clojure记录是定制的数据类型,看起来有点像Java类
很容易尝试编写“面向对象”的数据库通信,其中包含每个实体的记录。然而,所有数据库包含的都是数据,即列表、地图、集合和一些基本数据类型。我建议您将数据保存在内置的Clojure数据结构中,随时准备就绪,不要将其隐藏在不必要的抽象中。(旁注:您的DB组件,而不是DB实体,很可能是Clojure记录。例如,使用记录的生命周期管理。)
一个好的起点是,它允许您将SQL查询构建为Clojure数据结构。您可以取回数据,并可以使用Clojure的全部功能对该数据进行操作
然后,当您对“打开所有数据(不封装)”感到满意时,请描述数据的形状,什么是有效的,什么是无效的
clojure.spec
是一个强大的工具 如果我没有错的话。defschema派生自schema.core(clojure脚本库)。defschema和defrecord都不同。在这个场景中,我应该使用defrecord。如果我错了,请纠正我。