hibernate如此之强悍,为什么还用JDBc?
个人愚见:
既然hibernate封装了JDBC,也就是说,JDBC的功能hibernate都有,JDBC没有的功能hibernate也有。
那为什么有人还是用JDBC呢?
请说说JDBC和Hibernate的好处。多谢各位。
------解决方案--------------------增、删、改 hibernate都没什么问题。。
搞个10几张表相连的数据 你用hibernate查。。 那性能可能想而知。。
------解决方案--------------------1.JDBC操作繁琐
2.sql语句并不是面向对象的
3.可以在对象和数据表建立关联简化编程
4.可以跨数据库平台
------解决方案--------------------1.对性能要求高的项目来说,自己编写SQL语句比hibernate更好
2.hibernate适合开发人员,但对于测试人员,本来只需要一条简单的SQL语句,如今却要配置映射文件,如果某个表的字段非常多的话,这是一件痛苦的事情。
------解决方案--------------------
首先你这个问题说法就不对,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么?”这还是一个问题么?