2

私が達成したいことは些細なことのように思えます。それにもかかわらず、自分でそれを理解するのはかなりの頭痛の種です。

JPAを介してデータベースバックエンドと通信するClojureで記述されたサービス実装があります。私はこのようなことをしなければなりません:

(defn foo []
  (let [entitymanager ... query ...]
    (do
      (.. entitymanager (getTransaction) (begin))
      (read-from-db query) ; <-- shall be returned
      (.. entitymanager (getTransaction) (commit))
      )
    )
  )

read-from-dbが値を返します。java.jdbcパッケージを調べたところ、有望に見えますが、JPA に固執したい/固執しなければなりません。さらに、私の問題は JPA per sé に固有のものではないようです。

Clojure でこのような戻り値のラッピングを行う慣用的な方法はありますか? 私はClojureの初心者であることを覚えておいてください。

敬具!

4

1 に答える 1

3

あなたの問題がよくわかりません。これがあなたの問題であると私が推測するものに対する私の答えです:

(defn foo []
  (let [entitymanager ... query ...]
    (do
      (.. entitymanager (getTransaction) (begin))
      (let [db-reply (read-from-db query)] ; <-- shall be returned
        (.. entitymanager (getTransaction) (commit))
        db-reply)
      )
    )
  )

正しい?

于 2013-02-13T17:49:26.337 に答える