2011-07-07 11 views
3

シンプルさ、複雑さ、パフォーマンスに関して、HQLまたはSQL文を使用してデータベースをクエリすることに関する意見があります。Grails HQLとSQL文

答えて

8

HQLでは、リレーショナル・モデル・レベルでクラスベースのドメイン・レベルとSQLを操作しています。 HQLを使用すると、クエリとSQLでドメインモデルをトラバースすることができます。より冗長なジョインとジョイン条件でリンクを作成する必要があります。

また、HQLの投影は、オブジェクトを直接取得するほど簡単ですが、SQLではリレーショナルデータの表形式の表示が可能です。

多くのレベル(ドメインレベル、Hibernate、生成されたSQL、リレーショナルモデル)で操作する必要があるため、HQLの最適化はより困難ですが、ほとんどの場合、少ないコードで管理できます。

SQLの結果はタイプセーフではありませんが、これはJavaコンテキストと同じようにGrailsコンテキストではそれほど重要ではありません。

+3

+1。私は、Hibernateを使用して、第1レベルのキャッシュ(必須)と第2レベルのキャッシュ(オプション)を提供し、実際にパフォーマンスを向上させることを追加します。 –

+0

ニースの答え。また、あなたのHQLを不注意に使っている場合、パフォーマンスを実際に殺すことができる怠惰対熱意のオプションについて話すこともできます。 –