hibernate操作数据库,用占位符有什么好处??与直接拼字符串相比有什么好处?????

hql.append("fromCategoryRulevcwherevc.ruleCode=:ruleCode");List<CategoryRule>list=thi... hql.append("from CategoryRule vc where vc.ruleCode = :ruleCode");
List<CategoryRule> list = this.getSession().createQuery(hql.toString()).setString("ruleCode", ruleCode).list();

比下面这种有什么好处???

hql.append("from CategoryRule vc where vc.ruleCode '")
.append(ruleCode)
.append("'");
List<VendorCategoryRule> list = this.getSession().createQuery(hql.toString()).list();
展开
 我来答
cs6641468
2011-09-01 · TA获得超过5713个赞
知道大有可为答主
回答量:863
采纳率:100%
帮助的人:994万
展开全部
1.层次清晰,HQL长了之后代码也不显得乱
2.确实可以提高一定效率
3.安全性考虑,防止一些注入性攻击, 举个例子如果你的ruleCode变量从jsp页面获得,是客户手动输入的,那么客户如果恶意的输入一些特殊的字符 如 'or'='or' 那么你的HQL解析成SQL就变成
select * from CategoryRule vc where vc.ruleCode = ‘or’='or' ,如果这是用户名或者密码, 这样可能就能非法登录系统 ,或者获得后台一些数据错误信息的反馈。
采用setString就会把'or'='or' 整体当成一个串,就不会出现这种问题
仗剑折花
2011-09-01 · TA获得超过127个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:96.9万
展开全部
用占位符的目的是绑定变量,这样可以减少数据库对SQL的硬解析,所以执行效率会提高不少。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lijie34504
2011-09-01 · TA获得超过168个赞
知道小有建树答主
回答量:255
采纳率:0%
帮助的人:195万
展开全部
1.系统得将你的HQL语句转换成SQL语句才能执行,用占位符可以预先编译,提高执行效率
2.增加代码可读性
3.防止SQL注入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式