hibernate和jdbc的区别 优缺点

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

相同点:

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

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

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

不同点:

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

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

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

JDBC与Hibernate读取性能

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

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

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

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

5、读取数据,Hibernate的List速度很快,因为他是一次性把数据取完,这一点从观察任务管理器的java进程占用内存的变化也可以看得很清楚,内存几乎是10M的10M的增加。

6、JDBC读取数据的方式和Hibernate的List方式是一样的(这跟JDBC驱动有很大关系,不同的JDBC驱动,结果会很不一样),这从观察java进程内存变化可以判断出来,由于JDBC不需要像Hibernate那样构造一堆Cat对象实例,所以占用JVM内存要比 Hibernate的List方式大概少一半左右。

7、Hibernate的Iterator方式并非一无是处,它适合于从大的结果集中选取少量的数据,即不需要占用很多内存,又可以迅速得到结果。另外Iterator适合于使用JCS缓冲。

转载于https://blog.csdn.net/CNZYYH/article/details/53813524

原文地址:https://www.cnblogs.com/LLD-3/p/9674214.html

时间: 2024-09-29 23:04:14

hibernate和jdbc的区别 优缺点的相关文章

一起了解Hibernate与Mybatis的区别优缺点对比

hibernate与mybatis的区别优缺点对比 前言: 我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好Hi

hibernate和jdbc的优缺点,概述

1.分析hibernate和jdbc的优缺点 jdbc的优点和缺点 缺点 1.查询代码特别繁琐 2.重复性代码特别多,频繁的try,catch 3.没有做到数据的缓存 4.sql的移植性不好(mysql语句不能使用在Oracle) 优点 速度比较快 把控性比较好 hibernate的优点和缺点     是ormapping框架 ormapping框架:数据库的操作框架 优点 1.比较简单 2.数据缓存:一级缓存    二级缓存   查询缓存 3.移植性比较好 缺点 1.因为sql语句是hiber

Hibernate和JDBC、EJB比较

参考:http://m.blog.csdn.net/article/details?id=7228061 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系.Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码.从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系. 二.Hibernat

JPA、SpringData JPA 、Hibernate和Mybatis 的区别和联系

转自<JPA.SpringData JPA .Hibernate和Mybatis 的区别和联系> 一.JPA 概述 1. Java Persistence API(Java 持久层 API):用于对象持久化的 API 2. 作用:使得应用程序以统一的方式访问持久层 3. 前言中提到了 Hibernate,那么JPA 与 Hibernate究竟是什么关系呢: 1)JPA 是 Hibernate 的一个抽象,就像 JDBC 和 JDBC 驱动的关系 2)JPA 是一种 ORM 规范,是 Hiber

配置ssh框架启动tomcat服务器报异常Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

在Spring中配置jdbc时,引用的是dbcp.jar包,在db.properties配置文件中,使用了之前的properties配置文件的用户名username(MySql用户名) 然后在启动服务器报了如下几个异常: 1.org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [a

hibernate和ibatis的区别

通过别人的资料,进行自己关注的一些扼要点的整理 共同点: 1. 不同点:1. 自动化程度上,hibernate是全自动化的orm框架,提供了对象到数据库的完全映射和sql的内部自动生成,其对象映射是指pojo到整张数据表的映射.而ibatis则是半自动化的,其对象映射是指ibatis提供了sql语句的参数到pojo的映射,sql语句的返回到pojo的映射,而且sql语句并不自动生成,由开发者手动编写和维护. 2. 框架灵活性.自动化程度上的区别,直接影响了框架灵活性的区别.比如,在场景A中,要查

HttpSession与Hibernate中Session的区别

HttpSession与Hibernate中Session的区别 一.javax.servlet.http.HttpSession是一个抽象接口 它的产生:J2EE的Web程序在运行的时候,会给每一个新的访问者建立一个HttpSession,这个Session是用户身份的唯一表示.注意,是容器(Tomcat,Resin)自动创建的. 用途:存放这个用户的一些经常被用到的信息,例如:用户名,权限.例如在购物车程序里,存放用户买的商品. 销毁:一定时间(跟容器有关)内,用户无任何动作,session

Hibernate save()与persist()区别

本文章来给各位同学介绍一下Hibernate save()与persist()区别,希望此文章能对各位同学对于Hibernate save()与persist()有所理解. Hibernate 之所以提供与save()功能几乎完全类似的persist()方法,一方面是为了照顾JPA的用法习惯.另一方面,save()和 persist()方法还有一个区别:使用 save() 方法保存持久化对象时,该方法返回该持久化对象的标识属性值(即对应记录的主键值):但使用 persist() 方法来保存持久化

Hibernate与JDBC事务整合

一般大家都会使用Spring声明型事务 transactionAttributes 为 PROPAGATION_REQUIRED Hibernate 使用 HibernateTransactionManager .JDBC(iBATIS) 使用 DataSourceTransactionManager 当需要将它们整合到一个事务中的时候 普通的做法是配置统一的DataSource, Hibernate与JDBC(iBATIS) 都使用HibernateTransactionManager 坛子里