0

Java クラスにネイティブ SQL クエリを持つプロジェクトの DAO クラスを見ています。さまざまな条件に基づくさまざまなクエリがあります。これらのクエリを Java クラスから取り出す予定です。それはこのようなものになることができます -

<bean name="hibernateRuleDao" class="com.xyz.dao.RuleDao">
  <property name="ruleForSystemQuery">
    <value>
      select distinct rule from NormalRule as rule 
      inner join fetch rule.dimensions dimensions
      where rule.system = :system and rule.status = :status
    </value>
  </property>
  <property name="ruleAuditQuery">
    <value>
       select ra from RuleAudit ra where ra.rule.name =
       :ruleName
    </value>
  </property>
</bean>

これは正しいアプローチですか?これを行うための他のより良いアプローチはありますか?

注: 私のユースケースでは、hibernate/jpa 名前付きクエリを使用することはできません。

4

1 に答える 1

0

コードを再コンパイルせずに SQL の変更を容易にすることが目的である場合、はい、これで十分です。RuleDao を DAO クラスに注入するだけです。

ただし、私の意見では、SQL クエリの変更は、標準的なソフトウェア ライフサイクル (設計、実装、テスト、運用) を経る必要があります。そのため、SQL クエリが DAO クラスにハードコードされていることに満足しています。

于 2013-06-19T22:59:08.333 に答える