网站建设
  简约型网页设计套餐998
  实惠型网站建设套餐2580
  综合型网站制作套餐4980
  网站改版与网站维护
  行业网站建设方案
  大型网站建设解决方案
  企业网站建设流程
  帝网科技网站设计与网站制作
建站FAQ
·网站空间问题解答
·企业邮箱问题解答
 
酷站欣赏
·房产酷站(379)
·综合门户(8 9)
·建筑装饰(603)
·手机通讯(354)
·生活购物(376)
·医疗保健(199)
·文化摄影(602)
·休闲体育(399)
>>更多酷站欣赏
网站优化
·Google(谷歌)优化   ·百度(BaiDu)优化
·雅虎(Yahoo)优化    ·Alexa排名优化   
·Google AdSense   ·DMOZ目录提交  
建站知识
·网站建设知识·网站名词解释·网站运营知识
·网络营销知识·搜索引擎知识·实用技术文摘
网站推广
百度网站推广 google网站推广
搜狐网站推广 网易网站推广
新浪网站推广   雅虎网站推广
  您当前位置: 当前位置:帝网科技 >> web开发 >> JSP专栏 >> 浏览文章
 
 
hibernate 查询语句统一配置管理
作者:编辑整理 来源:帝网科技 日期:2008年09月07日 点击数:


你以前所参与的项目里面,SQL、HQL,是否满天飞呢?在逻辑层,显示层那里都可以看到随手写的查询语句?这样的做法极度的破坏了分层的架构,无论如何的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 = ?

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

   

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

Xml代码
   
          
              
                classpath:hbm/name-query.hbm.xml   
          
   
      
 
 


      
          
                classpath:hbm/name-query.hbm.xml
          

      

 

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

     

 

     2、标签管理

       一般的习惯都是使用@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;

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

  相关文章
 
·如何建立JSP操作以提高数据库访问效率
·servlet 生成静态HTML的方法
·使用JSP实现简易的SQL报表
·浅析Servlet和Jsp中的多国语言显示
·JSP/Servlet/JSF:自定义标签的另类体
·使用JSP+javascript打造二级级联下
·实例:JSP结合XML+XSLT将输出转换HTML
·JSP教程:JSP页面跳转的实战规则
·关于JSP中的offsetparent
·JSP中errorPage设置方法
·JSP用bean获取各种参数
·JSP基础知识教程
·在Eclipse中部署Tomcat,并运行JSP
·jsp教程:深入浅出URL编码
·JSP技术优缺点深入分析(2)
·Jsp环境下ajax乱码问题的解决方法
·JSP技术优缺点深入分析(1)
·jsp上传组件smartupload介绍
·JSP中文字符乱码处理的2种方法
·jsp入门:Jsp运行原理
 
 

公司环境 | 合作伙伴 | 人才招聘 | 付款方式 | 关于我们

地址:广州市天河区中山大道中120号D805 电话:020-82529556 传真:020-82529556
广州帝网网络科技有限公司 版权所有 粤ICP备08119341号