2013-06-19 36 views
0

我正在查看我的項目的DAO類,它有java類中的原生sql查詢。根據不同的條件有不同的查詢。我打算從java類中取出這些查詢。它可以是這樣的 -通過彈簧配置文件向DAO注入查詢

<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命名查詢是不是在我使用的情況下是可行的。

+0

我不會打擾這種方法,它看起來像額外的複雜性沒有任何好處。 – samlewis

回答

0

如果目的是爲了便於SQL修改而無需代碼重新編譯,那麼是的,這樣做。你只需要將RuleDao注入到DAO類中。

但是我認爲SQL查詢修改應該經過標準的軟件生命週期(設計,實現,測試,操作)。所以我很高興我的SQL查詢被硬編碼到DAO類中。

+0

IMO,這有助於保持所有查詢在一個地方(即春天配置文件)和DAO看起來更乾淨,並避免春季操縱等。人們可以爭論關於與春季配置文件搞亂。其他方法可能是維護屬性文件並使用PropertyPlaceholderConfigurer注入它。試圖找到最好的方法來處理這種情況。 – Pankaj