日期:2014-05-16  浏览次数:20403 次

hibernate与jdbc的区别

刚开始学习JAVA时,认为Hibernate是一个很神圣的东西,好像是会了SSH,就能走遍全世界一样。记得曾经在枫叶面试的时候,我们几个同学出还说这个公司怎么这么的落后,还有JDBC,没有一点上进心。可是毕业以后才发现,却发现自已就像是井底之蛙一样。然而也不想做随风柳絮,所以决定好好的总结一下,JDBCHibernate的区别。

JDBCHibernate在性能上相比,JDBC灵活性有优势。而Hibernate在易学性,易用性上有些优势。当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势 。

相同点:

两者都是JAVA的数据库操作中间件。

两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。

两者都可以对数据库的更新操作进行显式的事务处理。

不同点

使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言

操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。

数据状态不同:JDBC操作的数据是瞬时的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。

JDBCHibernate读取性能

1JDBC仍然是最快的访问方式,不论是Create还是Read操作,都是JDBC快。

2Hibernate使用uuid.hex构造主键,性能稍微有点损失,但是不大。

3Create操作,JDBC在使用批处理的方式下速度比Hibernate快,使用批处理方式耗用JVM内存比不使用批处理方式要多得多。

4、读取数据,HibernateIterator速度非常缓慢,因为他是每次next的时候才去数据库取数据,这一点从观察任务管理器的java进程占用内存的变化也可以看得很清楚,内存是几十K几十K的增加。