91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hibernate查詢語句如何統一配置管理

發布時間:2021-12-06 09:20:33 來源:億速云 閱讀:163 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Hibernate查詢語句如何統一配置管理的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

你以前所參與的項目里面,SQL、HQL,是否滿天飛呢?在邏輯層,顯示層那里都可以看到隨手寫的Hibernate查詢語句?這樣的做法極度的破壞了分層的架構,無論如何的XP也應該遵循一定的管理與規范,那么統一管理查詢語句的重要性就凸現了。

統一管理查詢語句有何優點?

1、保持系統的分層架構,管理語句是持久層的責任,由它自己管理是最適合不過。松散的耦合總是我們向往的目標。

2、統一管理方便修改,可以減小人手修改帶來的低級錯誤。

OK,接下來要考慮如何管理這些語句來了。

1、配置文件管理

在Hibernate查詢語句的mapping文件內使用<query> 

Xml代碼

<query name='findUserById'>           from User eo where eo.id = ?      </query>    <query name='findUserById'>        from User eo where eo.id = ?   </query>      <query>里面就是要使用的hql語句 屬性name就是語句保存在容器里的別名。                在hibernate的mapping文件內使用<sql-query>      Xml代碼   <sql-query name="findUserByName">           <return alias="user" class="hibernate.entity.User"/>                     SELECT user.id AS {user.id},                                  user.name AS {user.name}                     FROM t_user user WHERE user.name = ?      </sql-query>    <sql-query name="findUserByName">        <return alias="user" class="hibernate.entity.User"/>                  SELECT user.id AS {user.id},                               user.name AS {user.name}                  FROM t_user user WHERE user.name = ?   </sql-query>

<sql-query>里面的語句必須是sql語句,屬性name就是語句保存在容器里的別名,<reruen>里面的東東標明了返回對象的類型與別名,別名主要用于對應sql里面{}的內容。

寫好mapping文件后當然要告訴hibernate將這些語句加入到容器里面咯,配置方法有很多種,這里只列了使用spring結合hibernate的配置方式,在SessionFactoryBean的配置里面加入 

Xml代碼

<property name="mappingLocations">             <list>                 <value>                      classpath:hbm/name-query.hbm.xml                 </value>             </list>    </property>    <property name="mappingLocations">          <list>              <value>                   classpath:hbm/name-query.hbm.xml              </value>          </list> </property>

<sql-query>的使用比較復雜,所以不是遇到復雜的跨表查詢時,不推薦使用。

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查詢語句如何統一配置管理”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

六安市| 农安县| 仲巴县| 昌江| 航空| 宜兰县| 南川市| 宁德市| 穆棱市| 乐东| 南安市| 诸城市| 靖江市| 民丰县| 东阿县| 阿克苏市| 昌邑市| 馆陶县| 宁陵县| 莫力| 长丰县| 安阳市| 达孜县| 吐鲁番市| 汾西县| 辉县市| 淮阳县| 新邵县| 新源县| 巴楚县| 合阳县| 道真| 大新县| 新乡市| 定兴县| 神木县| 沁阳市| 山阴县| 巨鹿县| 安康市| 桃江县|