Hibernate查询语句统一配置管理

你以前所参与的项目里面,SQL、HQL,是否满天飞呢?在逻辑层,显示层那里都可以看到随手写的Hibernate查询语句?这样的做法极度的破坏了分层的架构,无论如何的XP也应该遵循一定的管理与规范,那么统一管理查询语句的重要性就凸现了。

成都创新互联公司成立与2013年,先为鸡东等服务建站,鸡东等地企业,进行企业商务咨询服务。为鸡东企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

统一管理查询语句有何优点?

1、保持系统的分层架构,管理语句是持久层的责任,由它自己管理是最适合不过。松散的耦合总是我们向往的目标。

2、统一管理方便修改,可以减小人手修改带来的低级错误。

OK,接下来要考虑如何管理这些语句来了。

1、配置文件管理

在Hibernate查询语句的mapping文件内使用 

Xml代码

 
 
 
  1.       
  2.      from User eo where eo.id = ?      
  3.    
  4.  
  5.    
  6.      from User eo where eo.id = ?   
  7.       里面就是要使用的hql语句 属性name就是语句保存在容器里的别名。  
  8.  
  9.       
  10.  
  11.       在hibernate的mapping文件内使用     
  12.  
  13. Xml代码   
  14.       
  15.            
  16.                SELECT user.id AS {user.id},      
  17.                             user.name AS {user.name}      
  18.                FROM t_user user WHERE user.name = ?      
  19.    
  20.  
  21.    
  22.         
  23.                SELECT user.id AS {user.id},   
  24.                             user.name AS {user.name}   
  25.                FROM t_user user WHERE user.name = ?   
  26.  

里面的语句必须是sql语句,属性name就是语句保存在容器里的别名,里面的东东标明了返回对象的类型与别名,别名主要用于对应sql里面{}的内容。

写好mapping文件后当然要告诉hibernate将这些语句加入到容器里面咯,配置方法有很多种,这里只列了使用spring结合hibernate的配置方式,在SessionFactoryBean的配置里面加入 

Xml代码

 
 
 
  1.       
  2.              
  3.                  
  4.                 classpath:hbm/name-query.hbm.xml      
  5.                  
  6.            
  7.    
  8.  
  9.    
  10.           
  11.               
  12.                 classpath:hbm/name-query.hbm.xml   
  13.               
  14.         
  15.  

的使用比较复杂,所以不是遇到复杂的跨表查询时,不推荐使用。

2、标签管理

Hibernate查询语句中,一般的习惯都是使用@NamedQueries将与自己相关的语句统一在实体里面,如查询User的语句都是放到User对象里面

Java代码

 
 
 
  1. @Entity    
  2. @Table(name = "t_user")      
  3. @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @NamedQueries( {      
  4.        @NamedQuery(name = "User.findById",      
  5.                query = "FROM User eo where eo.id=? ") })      
  6. public class User implements java.io.Serializable {      
  7.                      
  8.                 private int id;      
  9.               
  10.                 private String name;   
  11.  
  12. @Entity 
  13. @Table(name = "t_user")   
  14. @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @NamedQueries( {   
  15.        @NamedQuery(name = "User.findById",   
  16.                query = "FROM User eo where eo.id=? ") })   
  17. public class User implements java.io.Serializable {   
  18.                   
  19.                 private int id;   
  20.            
  21.                 private String name; 

使用标签管理可以比较好的分类Hibernate查询语句,也不用搞麻烦的配置文件,虽然说修改配置文件的Hibernate查询语句可以不用重新编译就能生效,但是查询语句修改也不会十分频繁,所以标签管理是一个不错的选择。

网站名称:Hibernate查询语句统一配置管理
本文URL:http://www.shufengxianlan.com/qtweb/news39/501839.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联