i do not think there is a single right answer to this question.... but i suggest you do consider the following.... you decided to go with a relational database ( i think that is perfectly fine! ) .... so one could argue... well... first and foremost your problem is related to ER-modeling etc... and not really about clojure.. :-)....
... what do i mean.... well... you have already mentioned ORM... since when you do java, the "impedance / paradigm mismatch" between the relational and OO worlds, often times, this leads to a huge amount of clutter / headache.... etc.
alright... but you do pay a huge price ( i think ) in terms of added complexity, when going with an ORM... i.e. if you are not careful about what your doing, hibernate, for example, will come up with the wildest things / queries... for example when naively fetching some kind of tree structure... the generated sql could be quite silly... now obviously hibernate is really powerful.... you can integrate very sophisticated caching etc. etc.... still ... to do hibernate well / right.... is not that easy / straightforward ... i think....
so... even when doing java i would suggest to consider spring jdbc data access first... since.... as i said... JPA certainly adds a good deal of complexity.... (.. so ask yourself if you really need JPA... )
... iiin any case... what i am saying is this.... relational databases are great... sql is great... postgres is great!!!... the problem with many programming languages is just that it is often times really painful to interact with the relational technology... so you start building all kinds of tooling like ORMs etc. to somehow make your life more bearable.... ( ... so we are talking about a therapy, not about a cure.... )
... now i want to argue that with clojure the entire mismatch problem is much less serious, since clojure is not build around classes like Person etc. but instead you have a few powerful collections and you are good to go :-)....
... so lets make this more concrete.... i have build this flashcard SAP using clojure(script)....
... now... there are lots of things i am not too happy about..... for example i really wanna change from bootstrap over to bulma etc. etc...... it was the first clojure project of non trivial size i have ever done.... so obviously i have made tons of mistakes.... and i will try to refactor / improve things as soon as possible.... the main point however is that what i am least worried about is the postgres / rdbms part....
.... i used the luminus template for setting the postgres project up... that setup includes hugsql ( A Clojure library for embracing SQL. ).... then you can do your ddl / schema stuff... your postgres queries.... stored procs... etc. etc.... in a way that is completely independent from any application programming language.... just use your postgres tooling / know-how... how great is that!!!!..... also.... say i wanna switch from clojure to java / node whatever.... well my entire database / persistence tier stuff can pretty much stay the way it is... since with hugsql you are really just doing sql..... plus very little meta configuration stuff that you put in comments... from those comments you will get the clojure functions you can use the run the queries..... you can pass args into those prepared statements in form of a map... and you get your output as a map for one record or a sequence of maps for n records.... and nil for no records..... i guess....
.... for doing transformations etc. you have all your basic but powerful clojure functions that make massaging maps and seqs a breeze..... also there is always a little bit of type conversion stuff... when you go from postgres to java.... from java to js.... but if you use luminus ... you will get those helpers out of the box.... so for example in my flashcard app i have a lot of timestamps.... ( ... when did you get the answer to some card right.... when did you leave a comment etc. etc.... )... and date types have always been tricky..... java.sql, java.util, joda etc..... but when doing this app i really did not have to worry about any of that stuff... luminus makes it all happens under to hood for you.... also.... using the great time libs for clj(script)....( https://github.com/dm3/clojure.java-time / https://github.com/andrewmcveigh/cljs-time ).... you can write your time related code... and it would work on the middle-ware as well as the front end....( ...with minor exceptions... )....(... luminus does provide the needed transit-adapter? ( not sure if its actually called that...) stuff also!!! )....
... in any case.... i went with this kiss principle based strategy... and i am quite pleased with it.... make of that whatever you will.... :-)