hibernate jdbc

来源:互联网 发布:手机淘宝中评可以改吗 编辑:程序博客网 时间:2024/05/17 03:04
首先你这个问题说法就不对,Hibernate强悍就不要JDBC这句话是存在问题的,因为Hibernate就是对JDBC进行的封装。
     JDBC的全城叫做Java Data Base Connectivity(java数据库连接),是一组由Sun公司提供的Java操作数据库的API,然后由各个数据库厂商进行了实现,这样我们就能通过相应的驱动包进行各种数据库的连接操作。Hibernate就是基于JDBC的这个一个持久层框架。那么为何要有Hibernate呢?Hibernate又为何而来呢?这要从我们本身Java这门语言说起,Java语言从出生开始就被定位为一种面向对象的语言,Java视一切皆对象,而我们目前大多数的数据库为关系型数据库,数据是通过表与表之间的关系进行联系,当我们使用JDBC操作关系型数据库的时候我们不得不去考虑关系型问题,这样就违背了我们Java这门语言的面向对象观点,于是Hibernate出现了,Hibernate就是为了隔绝对象和关系型数据库之间的这一层别扭(姑且这么叫吧),这样,我们站在Hibernate的角度我们只需要考虑对象的操作,比如说保存一个对象只需要调用session的save方法,而不需要写一条insert into的SQL语句去操作关系型的表,从而达到OO的思想。这样我们就纯面向对象了,那些非面向对象的事情都交由Hibernate去做了,Hibernate会帮我们生成一条insert into语句去发送给数据库。
    既然Hibernate如此的好,那么当Hibernate出现后我们还需要JDBC吗?上面我讲了,不是我们不要JDBC了,而是Hibernate帮我们去操作了JDBC,既然Hibernate在操作JDBC我们在操作Hibernate,这样Hibernate就充当了一个中间人的角色,我们想要什么东西须得交给Hibernate,然后再由Hibernate交给JDBC,这样就会多一层去操作,对性能会有一定的影响,如果你的程序对性能要求非常高,那么自己操作JDBC自然要比Hibernate速度更快、效率更高。
    在批量处理问题上,Hibernate并没有提供较完美的实现,比如说你要修改1万个对象的某一个属性,通过Hibernate操作你得先加载这1万个对象,然后修改这1万个对象的属性,然后再保存这一万个对象,而JDBC我们可以update xxx set x = x where x = x就可以实现。
    看完我的回复之后你觉得“Hibernate如此强大,还需要JDBC么?”这还是一个问题么?
况且一些复杂的sql,hibernate是不支持 ,这时候只能老老实实的写sql语句了


java的应用范围很广,大部分公司都会用到ssh、ssi、javascript(jquery、extjs)等一些框架,一些公司也会在此基础上封装一些自己的东西,做成自己的框架。
java开发主要是bs,做网站(广域网、局域网)之类的东西,客户端程序相对来说较少
0 0
原创粉丝点击