hibernate和jdbc是怎么通过问号防止sql注入的

作者&投稿:历红 (若有异议请与网页底部的电邮联系)
hibernate 通过session.createCriteria方法进行查询,是否可防止sql注入~

不能阻止,hibernate也是替换,它怎么能防止你SQL注入。
如:sql:select * from emp where ename like '%abc%';——hibernate也是组装的sql,替换属性值。
'%abc%':这个是你的某个bean的一个属性,如果改成'%%' or 1=1
这样不是不管你什么条件都把表中所有的记录都检索出来了。

  不要。
  你的sql或者hql,是拼装的还是prepared传递的(?传递)。
  拼出来的,当然需要防注入了。和你用不用hibernate没关系

?的个数和标识位是不确定的,这里属于B


A、 按参数名称绑定: 

B、 按参数位置邦定: 

在HQL查询语句中用”?”来定义参数位置,形式如下: 
Query query=session.createQuery(“from User user where user.name=? and user.age =? ”); 
query.setString(0,name); 
query.setInteger(1,age); 

同样使用setXXX()方法设定绑定参数,只不过这时setXXX()方法的第一个参数代表邦定参数在HQL语句中出现的位置编号(由0开始编号),第二个参数仍然代表参数实际值。 

注:在实际开发中,提倡使用按名称邦定命名参数,因为这不但可以提供非常好的程序可读性,而且也提高了程序的易维护性,因为当查询参数的位置发生改变时,按名称邦定名参数的方式中是不需要调整程序代码的。

C、 setParameter()方法: 

D、 setProperties()方法: 



jdbc与hibernate的优缺点比较
答:1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在...

jdbc和hibernate的区别
答:1.使用的SQL语言不同,JDBC是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言。2.操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,而Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。3.数据状态不同:JDBC操作的数...

在做hibernate的时候为什么还要加jdbc驱动呢?我想理解一下hibernate的...
答:简单说,就是hibernate底下是直接使用jdbc的api接口进行的编程,然后操作具体的某种数据库时候,jdbc的api接口需要针对这个具体数据库系统的实现,即特定的jdbc驱动了。

Hibernate与jdbc哪个好?各自的优点和缺点
答:2、运行效率: 如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语 句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此Hibernate架构表现出最快的运...

Hibernate 和 JDBC 的优缺点?
答:Hibernate:优:面向对象的思维,一些简单查询不需要sql语句。比较方便。使用者不必了解sql语句。缺:面对一些复杂查询的时候不是很灵活,比如要查询多个表的数据作为结果集,用hibernate就要设置这些表的实体对象关联关系。(虽然hibernate也可以执行sql,但是感觉效率不高)jdbc:原生sql。需要了解sql语言。优:...

hibernate的优化问题?
答:初用HIBERNATE的人也许都遇到过性能问题,实现同一功能,用HIBERNATE与用JDBC性能相差十几倍很正常,如果不及早调整,很可能影响整个项目的进度。大体上,对于HIBERNATE性能调优的主要考虑点如下:数据库设计调整 HQL优化 API的正确使用(如根据不同的业务类型选用不同的集合及查询API)主配置参数(日志,查询缓存...

jdbc mybatis hibernate 怎么开启关闭事务
答:JDBC使用Connection控制事务,它有如下方法:setAutoCommit(false):开启事务,commit:提交事务 rollback:回滚事务 ---手动分割线--- MyBatis使用SqlSession控制事务,它提供如下方法 commit:提交事务 rollback:回滚事务 ---手动分割线--- Hibernate使用Tranaction控制事务,提供如下方法 commit:提交事务 r...

jdbc框架有哪些除了dbutil
答:1、SpringJDBC:SpringJDBC是Spring框架中的一个模块,提供了针对JDBC的封装,可以更方便地操作数据库。2、MyBatis:MyBatis是一个比较流行的ORM框架,它通过XML或注解的方式实现了SQL语句和Java对象的映射关系,使得开发者可以更轻松地编写和维护SQL语句。3、Hibernate:Hibernate是一个比较成熟的ORM框架,它...

hibernate工作原理及为什么要用
答:Hibernate是一种ORM框架,主要作用是简化应用的数据持久层编程,不需要程序员编写大量SQL和JDBC说代码,也可以说成是对象持久化技术。所谓持久化对象(Persistent Object)即封装了数据库表记录的对象。程序中使用的对象是短暂的状态,当不使用时java的GC机制会自动释放不用的对象。而利用hibernate便可以实现...

hibernate的优缺点是什么?
答:1.Hibernate的优缺点:优点:1、程序更加面向对象;2、提高了生产率;3、方便移植(修改配置文件);4、无侵入性。缺点:1、效率比JDBC略差;2、不适合批量操作。2.Hibernate有四种查询方案:1、get,load方法,根据id查找对象 2、HQL--hibernate query language(查询对象:Query)3、Criteria--标准查询...