3

私はしばらくの間JPA2でQueryDSLを使用していますが、これは私が知っているORMの最も強力な組み合わせです。JPACriteriaAPIは災害です。QueryDSLでは、JPQLについても忘れてしまいました。

PlayでQueryDSLを使いたい!文字列としてのJPQLのインライン部分を除いて、Playではすべてが非常によく見えます。それは私にCakePHPを思い出させます...

Play(および他のいくつかのもの:))にリファクタリング防止のクエリ言語が必要です。

QueryDSLの使用法は簡単です。EntityManagerのみが必要です。ただし、QueryDSLにはこのAPTクラスジェネレーターがあります(Hibernate for citeria APIのものと同じです)。

誰かがこのクラスジェネレータをPlayで動作させることができましたか?それらのクラスを再作成してホットリロードすることは可能ですか?

4

4 に答える 4

3

Playフレームワークでの注釈処理を使用したProjectLombok経験が役立つと思います。APT処理のセットアップは簡単ですが、非常に具体的です。play-lombokモジュールを見てください。コマンド.pyファイルを無視せず、お使いのバージョンのPlayで使用されているバージョンと一致するようにorg.eclipse.jdt.core-3.6.0.jar参照を変更してください。

最近のすべてのプロジェクトで、PlayフレームワークでQuerydslを使用しています。ただし、JPAは使用していません。状況に応じて適切に適合させるために、ORMの代わりにQuerydslを使用して独自のオブジェクトモデルを使用しています。QuerydslでAPTを使用する必要はありませんでした。

PlayとQuerydslの緊密な統合は作成していませんが、各コントローラーメソッドで少し定型文を使用しています。いつか適切なプラグインを作成します。

于 2011-09-21T20:12:08.413 に答える
2

Eclipse を使用して querydsl を実行しています。( http://blog.mysema.com/2010/10/using-querydsl-in-eclipse.htmlを参照)

生成されたソース ディレクトリとして app/ を使用しました。これは、Q クラスが最適ではないが機能するモデル クラスと同じディレクトリに生成されることを意味します。

これらの行を dependencies.yml に追加しました

    - com.mysema.querydsl -> querydsl-jpa 2.2.3
    - com.mysema.querydsl -> querydsl-apt 2.2.3
    - log4j -> log4j 1.2.16
    - javassist -> javassist 3.12.1.GA

repositories:
    - queryDSL:
        type: iBiblio
        root: "http://source.mysema.com/maven2/releases/"
        contains:
            - com.mysema -> *           

次に、Eclipseでプロジェクトを使用play dependencies --syncして再度開くと、動作するはずですplay eclipsify

于 2011-10-22T11:58:56.610 に答える
1

私は Play の経験はありませんが、次のように Play フレームワークで Querydsl SQL を使用できたことは知っています: http://twitter.com/#!/rrmckinley

彼はあなたを助けることができるかもしれません。Querydsl と Play の他の統合については知りません。

于 2011-09-21T19:04:58.673 に答える