关于hibernate的查询配置问题

问题描述

目前,hibernate支持在配置文件写hql或原生sql,该功能带来了至少两个优点:1.数据库平台的可移植性2.数据库sql的调优,通过将所有的sql放到配置文件中,可以在之后遇到性能问题时,专由dba来进行性能调优。在java中写sql、hql、或criteria都不能方便调优。基于以上两个原因,我在自己的项目中总是把sql语句放到hbm文件中,但发现了下面两个问题:1.通过配置文件写sql,是否支持动态sql?若不支持,有没有什么更好的办法,来解决这个问题,又不丧失上面两个优点?解释:多条件查询(查询条件多个,但可选)时,不能像ibatis那样通过在sql配置文件中判断某个参数是否传过来来动态的构造sql(hql)。举例如下:有一个查询,页面查询条件是用户名输入框,查询时可为空,在配置文件中我通过如下语句:select*fromusertwheret.username=decode(:username,null,t.username,:username)来查询,如果页面没有输入用户名,则相当于调用select*fromusertwheret.username=username了,username=username相当于1=1,但在查询时又过滤这个条件,这造成了性能低下,若条件多个,性能甚是堪忧。针对这种情况,不知哪位朋友有更好的解决方案,望不吝告知2.通过配置文件写sql,在查询条件包含in(...)时,并且传过来的in内部参数个数无法确定时,该如何写sql?或有没有更好的解决方案?望高手回答,若能解决再送30分

解决方案

解决方案二:
不知道解决的办法。一般情况下,你如果很喜欢写sql,用iBATIS算了。而写hql的话,老实说调优是很没必要的,至于移植,笑谈而已。hibernate的配置文件里写sql,一般只用于调用存储过程。楼主走火入魔了。
解决方案三:
一楼楼主缺乏项目经验吧,这可以理解,但请不要不懂装懂,胡言乱语,大放厥词。我两年前做的一个产品就有数据库移植的需求,卖给山东时用oracle,卖给河南时用的db2,而且后期hql的调优还起了很大作用,我把sql写在配置文件另一个很大的原因还在于这样在dao里少了不少重复啰嗦的的sql判断处理语句,大大减少了代码的编写,甚至可以不要dao,只写一个通用的dao就可以了。正因为有这个项目经历,我才这样做的。学习交流要谦虚礼让,相互尊敬,系望一楼谨记。另请高人指教
解决方案四:
唉,你火气很大啊。我帮你顶一下吧,希望你能找到你心目中的高人。但我个人来讲,我只是觉得你蛋疼。

时间: 2024-10-22 14:25:32

关于hibernate的查询配置问题的相关文章

hibernate的缓存配置问题

问题描述 hibernate的缓存配置问题 hibernate的缓存已经设置好了....经过测试没有问题... <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" diskPersistent=&qu

Hibernate属性查询简介

本文向大家介绍Hibernate属性查询,可能好多人还不了解Hibernate属性查询,没有关系,看完本文 你肯定有不少收获,希望本文能教会你更多东西. 今天说一下Hibernate属性查询:使用HQL的时候并不是把 hbm.xml 里面的所有属性取出来,只取出有 用的属性便可以了,举个例子: List list =session.createQuery ("select user.name,user.age from TUSER user").list(); Iterator it

多个相同类的属性-hibernate的关联关系配置问题

问题描述 hibernate的关联关系配置问题 我现在有一个借阅信息类,如下 class Borrow { private String borrowId;// 借阅流水 private Book book; private User borrowUser;// 借阅人 private Date borrowDate;// 借阅日期 private Date shouldReturnDate;// 应还日期 private User orderUser;// 预约人 private int re

spring-新手关于Spring管理Hibernate下查询性能的疑问

问题描述 新手关于Spring管理Hibernate下查询性能的疑问 我这么两段代码: 1.Query query = Dao.createQuery("from table"); list = query.list(); for(Table item : list){ Query query2 = Dao2.createQuery("select id from table2"); list = query2.list(); } 2.Query query = D

java-Java Hibernate中查询取值

问题描述 Java Hibernate中查询取值 Sql语法是这样的:![图片说明] 用Hibernate查询的语法不知道有没有问题呢? 还有最后一个问题: 我查询后的值存在query里面了, 我又要怎么取值呢? 求大家帮帮忙 解决方案 你那ID写里面就是死值了,要么用"?"代替,要么用 "+ +" 抱起来,哪有你那么写的 解决方案二: query.list()吧,然后看返回值是什么类型就用什么类型去接收就OK了.推荐看看这个先,里面有你想要的内容:http://z

hibernate hql查询问题

问题描述 hibernate hql查询问题 遇到个hibernate hql查询的问题,求高手解答 实体类A包含实体类T属性,实体类T有两个子类T1,T2,代码如下: A{ T t; } T{ } T1 extends T{ } T2 extends T{ } 现在我要查询A,条件是T为T2的类型,HQL语句应该怎么写? 解决方案 除了Java类与属性的名称外,查询语句对大小写并不敏感. 所以 SeLeCT 与 sELEct 以及 SELECT 是相同的,但是 org.hibernate.eg

hibernate模糊查询条件是中文 但是不能返回值

问题描述 小弟请教一下:我用的hibernate模糊查询页面的数据是utf-8,数据库也是模糊查询的条件是中文他就是返回为空但是是数字他又正确了我保证hql语句正确的用的是SSHspring我配置了characterEncoding=UTF-8请大家赐教 解决方案 解决方案二:你首先要看看不的数据库的中文是否是乱码,是的话那就不能查询出来,数字又正确,说明你的查询语句没错,仔细看下解决方案三:数据库不是乱码,数据是正确的查询语句如下:fromDepartmentdmwheredm.departm

hibernate 级联查询

hibernate级联查询 1,实体类结构 Java代码   @Entity   @Table(name = "t_vote")   public class Vote {       private int id;       /***       * 1:最宜居<br>       * 2:最优户<br>       * 3:最佳物业       */       private int type;       private HouseBuilding h

mysql 数据库-HIbernate映射查询出错,

问题描述 HIbernate映射查询出错, UserIm表继承User表,使用的是@Inheritance(strategy = InheritanceType.JOINED)策略,其中User对象中有Accout对象,User和Accout对象之间是有关联表 ORG_ACCOUNT_USER_CLIENT的,但是这个关联表里还有其他字段有外键关联,字段名为 CLIENT_ID,不知道hibernate是怎么弄的,查询的时候把这个 CLIENT_ID 也查询了,我没设置让他查询 CLIENT_I