重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
這篇文章給大家分享的是有關Hibernate查詢語句如何統一配置管理的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創新互聯建站始終堅持【策劃先行,效果至上】的經營理念,通過多達十多年累計超上千家客戶的網站建設總結了一套系統有效的全網營銷解決方案,現已廣泛運用于各行各業的客戶,其中包括:辦公空間設計等企業,備受客戶好評。
你以前所參與的項目里面,SQL、HQL,是否滿天飛呢?在邏輯層,顯示層那里都可以看到隨手寫的Hibernate查詢語句?這樣的做法極度的破壞了分層的架構,無論如何的XP也應該遵循一定的管理與規范,那么統一管理查詢語句的重要性就凸現了。
統一管理查詢語句有何優點?
1、保持系統的分層架構,管理語句是持久層的責任,由它自己管理是最適合不過。松散的耦合總是我們向往的目標。
2、統一管理方便修改,可以減小人手修改帶來的低級錯誤。
OK,接下來要考慮如何管理這些語句來了。
1、配置文件管理
在Hibernate查詢語句的mapping文件內使用
Xml代碼
from User eo where eo.id = ? from User eo where eo.id = ? 里面就是要使用的hql語句 屬性name就是語句保存在容器里的別名。 在hibernate的mapping文件內使用 Xml代碼 SELECT user.id AS {user.id}, user.name AS {user.name} FROM t_user user WHERE user.name = ? SELECT user.id AS {user.id}, user.name AS {user.name} FROM t_user user WHERE user.name = ?
寫好mapping文件后當然要告訴hibernate將這些語句加入到容器里面咯,配置方法有很多種,這里只列了使用spring結合hibernate的配置方式,在SessionFactoryBean的配置里面加入
Xml代碼
classpath:hbm/name-query.hbm.xml
classpath:hbm/name-query.hbm.xml
2、標簽管理
Hibernate查詢語句中,一般的習慣都是使用@NamedQueries將與自己相關的語句統一在實體里面,如查詢User的語句都是放到User對象里面
Java代碼
@Entity @Table(name = "t_user") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @NamedQueries( { @NamedQuery(name = "User.findById", query = "FROM User eo where eo.id=? ") }) public class User implements java.io.Serializable { private int id; private String name; @Entity @Table(name = "t_user") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @NamedQueries( { @NamedQuery(name = "User.findById", query = "FROM User eo where eo.id=? ") }) public class User implements java.io.Serializable { private int id; private String name;
使用標簽管理可以比較好的分類Hibernate查詢語句,也不用搞麻煩的配置文件,雖然說修改配置文件的Hibernate查詢語句可以不用重新編譯就能生效,但是查詢語句修改也不會十分頻繁,所以標簽管理是一個不錯的選擇。
感謝各位的閱讀!關于“Hibernate查詢語句如何統一配置管理”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!