我认为这个问题没有一个单一的答案,但我建议你考虑以下建议......你选择了关系型数据库(我认为这完全没问题!)......所以有人可能会争辩说,首先,你的问题与ER建模等密切相关......而不是真正与Clojure相关。:-)
......我的意思是,你已经在提到ORM了。自从你做Java以来,“阻抗/范型不匹配”在关系型和OO世界之间,很多时候会导致大量的混乱/头疼等等。
好了,但是你会付出巨大的代价(我认为),当使用ORM时。例如,如果你不小心,hibernate等将产生最奇怪的事情/查询。例如,在无序地获取某种树结构时,生成的SQL可能会非常愚蠢。现在显然hibernate非常强大。你可以整合非常复杂的缓存等。等。然而,要做好hibernate,我认为并不那么容易/直接。
所以,即使在做Java时,我仍然建议首先考虑Spring JDBC数据访问......因为,就像我说的那样,JPA确实增加了很多复杂性......(..所以问问自己你是否真的需要JPA... )
...无论如何,我想说的是这个......关系数据库很棒...SQL很棒...PostgreSQL很棒!!!...许多编程语言的麻烦在于与关系技术交互往往非常痛苦...因此您开始构建各种工具,如ORM等,以使您的生活更容易忍受....( ...所以我们谈论的是治疗方法,而不是治疗方法.... )
...现在我想论证,与Clojure相比,整个不匹配问题要严重得多,因为Clojure并不是围绕Person等类构建,而是一个少数强大的集合,您就可以出发了 :-).....
...所以让我们更具体一点...我使用Clojure(script)构建了这个闪卡SAP...
...现在...有很多我不太满意的事情......例如,我真的很想从Bootstrap切换到Bulma等等......这是我做的第一个非平凡大小的Clojure项目......所以很明显,我犯了很多错误......我将继续尽快重构/改进事物......然而,最主要的是,我最担心的是PostgreSQL / RDBMS部分...
....我使用luminus模板来设置PostgreSQL项目...此设置包括hugsql(一个拥抱SQL的Clojure库)....然后你可以做ddl / schema的事情...你的PostgreSQL查询...存储过程...等等等等....以一种完全独立于任何应用程序编程语言的方式...只需使用你的PostgreSQL工具/知识...这有多棒!!!.....另外,比如说,我想从clojure切换到java / node whatever...我的整个数据库/持久化层东西可以基本保持不变...因为 tienes with hugsql,你实际上只是在做什么sql......加上非常少的元配置东西,你把它们放在注释里面...从那些注释中,你可以得到可以用来运行查询的Clojure函数.....你可以以map的形式向这些预处理语句传递参数...并以map的形式得到单个记录的输出,或n个记录的序列映射...没有记录返回nil......我想......
....进行转换等,您拥有一切基本但强大的Clojure函数,使映射和seqs的处理变得容易.....另外,当你从PostgreSQL到java......从java到js等进行类型转换时,总是会有一点点...但如果使用luminus,你将获得这些辅助工具开箱即用...所以,例如,在我的闪卡应用程序中,我有很多时间戳......( ...你在某个卡片上回答正确时的确切时间...你留下评论时的确切时间等等等等...)...数据类型一直很复杂......java.sql、java.util、joda等等......但在做这个应用程序时,我根本不需要担心任何这些东西...luminus为你处理这一切......另外,使用clj(script)的出色时间库....( https://github.com/dm3/clojure.java-time / https://github.com/andrewmcveigh/cljs-time )....你可以编写与时间相关的代码...并且它会在中间件以及前端上工作..."...有轻微的例外...")……...(...luminus还提供必要的transit-adapter工具?(不确定是否真的这么叫)也提供了!!!)
...无论如何,我采用了基于KISS原则的策略,并且对此感到相当满意......你对此有什么看法都可以...... :-)