公司用Hibernate框架

天池番薯 发布于 2014/07/28 14:44
阅读 1K+
收藏 0

可惜我不喜欢写HQL,,每次都用 stringBuffer  来写SQL 语句,直接我要的 查询结果


毕竟sql 直接在oracle上调好了,,能直接在 dao上使用了

请问老是这样做,是不是会影响性能,有些sql很复杂呀,关联了好几张表做统计, 有没有什么优化的

建议, 这是SQL:
 select distinct e. marketing_id, e.* ,ec.v , 
 (select   count(service_id) co from service_user d where  d.service_id in(select n.service_id  from service_marketing n  where n.marketing_id =e.marketing_id)) pp  ,
   trunc((ec.v  / (select   count(service_id) co from service_user d where  d.service_id in(select n.service_id  from service_marketing n  where n.marketing_id =e.marketing_id))  * 100),2)   
     from marketing e ,(select count(marketing_id) v ,u.marketing_id from marketing_userinfo u group by u.marketing_id)  
   ec where e.marketing_id=ec. marketing_id  order by  ec.v desc


 

加载中
1
Fanxme
Fanxme

做复杂的统计查询本身就不是hibernate的强项。
如果这样的复杂查询在项目中占比较少,将就着用,或者简单封装下JDBC查询操作。
如果是专业的数据统计类项目,复杂查询统计很多,还是别指望hibernate了。

非常不理解各位的看法:这么复杂的统计操作,怎么就不能拼sql了?

0
一号男嘉宾
一号男嘉宾
每次都用 stringBuffer  来写SQL 语句,你是在找死。
一号男嘉宾
一号男嘉宾
回复 @王涛 : 这样会死得有尊严点。
王涛
王涛
StringBuilder sb = new StringBuilder("from User u"); if(null != name) { sb.append("u.name=?"); } …… 这样不会死吧
rabbitgg
rabbitgg
拼接的可以使用绑定参数,参数使用map传入即可
一号男嘉宾
一号男嘉宾
拼接的SQL容易被注入
rabbitgg
rabbitgg
为什么认为那样会找死?
0
都哑
都哑
直接贴在hibernate的配置文件中都比你StringBuffer拼凑的好
0
calvary
calvary
丢掉hibernate .sql直接上.. 
0
呼呼南风
呼呼南风
呵呵!既然要求了,那你还那样干,这不是作死的节奏嘛!如果HQL不能实现了可以沟通一下是否能使用sql。如果强制要用那就好说,那你那个sql弄成views 就可以了。
天池番薯
天池番薯
大哥呀,怎么写成view呀,视图用的比较少,额,再说了写成view是不是每次新建表,都要重新导入view呀?
0
old_big
old_big

拼hql和sql者一律开除,教育不过来的。

不会使用hibernate可以学,不学就是你的错了。检索条件个数变化,禁止用hql,采用criteria

陈文锦的秘密
陈文锦的秘密
criteria的功能十分有限吧? 连接表的时候就捉襟见肘了
唐代de豆腐
唐代de豆腐
拼hql又咋滴。你还以为会sql注入
th小米粥
th小米粥
技术是拿来用的。合适的地方用合适的技术。开除?装!!
0
th小米粥
th小米粥
如果类似于统计报表的sql之类的。或者业务操作特别复杂的。建议写成配置。可修改的好一点。
天池番薯
天池番薯
怎么个写成配置呀?跪求指点
0
开源中国首席攻城师
开源中国首席攻城师
我就是这么拼SQL的。。。
0
JacarriChan
JacarriChan
还是觉得mybatis好
0
jolphin
jolphin
把查询全部封装到存储过程
返回顶部
顶部