Hibernate与JDBC的优缺点
二者的联系:
JDBC是java应用程序连接数据库,进行数据存取的一种机制,是一组用java语言编写的类和接口的API,它和数据库之间由各个厂商提供的数据库驱动进行关联。
hibernate是一个开源的轻量级的ORM框架,它在底层对jdbc进行了封装。
优点:
hibernate的最主要的几个优点是:
一、hibernate可以让开发人员以面相对象的思想来操作数据库。jdbc只能通过SQL语句将元数据传送给数据库,进行数据操作。而hibernate可以在底层对元数据和对象进行转化,使得开发者只用面向对象的方式来存取数据即可。
二、hibernate使用xml或JPA的配置以及数据库方言等等的机制,使得hibernate具有更好的移植性,对于不同的数据库,开发者只需要使用相同的数据操作即可,无需关心数据库之间的差异。而直接使用JDBC就不得不考虑数据库差异的问题。
三、hibernate提供了大量的封装(这也是它最大的缺点),很多数据操作以及关联关系等都被封装的很好,开发者不需写大量的sql语句,这就极大的提高了开发者的开发效率。
四、hibernate提供了缓存机制(session缓存,二级缓存,查询缓存),对于那些改动不大且经常使用的数据,可以将它们放到缓存中,不必在每次使用时都去查询数据库,缓存机制对提升性能大有裨益。
缺点:
一、有时优点也即缺点,对hibernate而言,它对JDBC封装过于厉害,所以就失去了对SQL的控制(当然hibernate也可以使用native sql既使用createSQLQuery等方法来调用与数据库相关的sql,但这样一来也就影响了hibernate的可移植性),使得hibernate的在很多地方不够灵活,难于优化,尤其对于一些复杂的关联查询时,hibernate提供的功能远不及直接使用JDBC方便性能更高。
二、hibernate没有提供专门的批处理机制,如果要批量更新或插入数据时,还需要显示的flush,clear之类的操作,性能不如JDBC。
三、相对于JDBC,hibernate更消耗内存,因为它每次的数据库操作都要做数据和对象的转换/封装,查询出一条数据就要创建一个或多个对象,这样也太消耗内存了。
四、hibernate提供了很多好处,但这些好处本身就是陷阱(如proxy陷阱等),开发者如果不注意就会调入陷阱而不知,这样就可能会出现一些无法排查的异常情况,比如程序表面上看着毫无错误,可就是达不到预期的效果,而且并无异常抛出,断点排查也不一定能找到症结所在,这将是非常令人抓狂的一件事!!!!!
Hibernate与JDBC的优缺点相关推荐
- hibernate和jdbc的优缺点,概述
1.分析hibernate和jdbc的优缺点 jdbc的优点和缺点 缺点 1.查询代码特别繁琐 2.重复性代码特别多,频繁的try,catch 3.没有做到数据的缓存 4.sql的移植性不好(mysq ...
- 简述 Hibernate 和 JDBC 的区别、优缺点
1.hibernate是一个开源的.采用面向对象的思想实现ORM映射框架,它对jdbc进行了一层封装,对于数据库的连接.关闭.数据的持久化(增删改查).事务的管理都进行了封装,使得程序开发的时候可以用 ...
- Hibernate和JDBC、EJB比较
参考:http://m.blog.csdn.net/article/details?id=7228061 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App S ...
- spring 同时配置hibernate and jdbc 事务
http://blog.csdn.net/mypop/article/details/6120377 在项目中同时用到了JDBC和Hibernate,分别配置了各自的事务,同时配置了不同的tx:ann ...
- 我们如何意外地将Hibernate的JDBC流量增加了一倍
这篇文章描述了我最近使用Hibernate ORM的经验. 多年以来,该框架并没有让我感到惊讶,您可能会在使用它时遇到性能问题. 我以为我已经看完了,但是这次我又措手不及了. 该问题的基础是在对一个完 ...
- 作为一个程序员,hibernate和jdbc 有什么不一样的点,你知道吗
1.hibernate和jdbc主要区别就是,hibernate先检索缓存中的映射对象( 即hibernate操作的是对象),而jdbc则是直接操作数据库. 2.Hibernate是JDBC的轻量级的 ...
- org.hibernate.TransactionException: JDBC begin transaction failed的解决方法
异常: javax.servlet.ServletException: org.springframework.transaction.CannotCreateTransactionException ...
- Hibernate与JDBC、EJB、JDO的比较
常用的数据库操作包括:JDBC.EJB.JDO以及Hibernate.它的各有优缺点: (1) JDBC:多数Java开发人员是用JDBC来和数据库进行通信,它可以通过DAO模式进行改善和提高.但这种 ...
- 在Spring中采用声明式方法对Hibernate和JDBC进行统一的事务配置(AOP)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
最新文章
- 浅谈 nagios监控配置
- 51nod 1275 连续子段的差异
- Python学习笔记:TypeError: not all arguments converted during string formatting
- python写excel标记文字颜色_python3使用xlwt时写入文档字体颜色和边框样式
- C语言中无符号数和有符号数相加问题
- centos 系统管理维护指南
- ubuntu的home目录下,Desktop等目录消失不见
- python 格式化输出%和format
- 换了一个皮肤,心情也好多了
- 浅谈java.awt使用过程中遇到的问题
- 《完美软件》笔记8:如何应对防卫反应
- 在线文本按列截取工具
- python3file函数_Python3 File(文件) 方法
- EDA技术实用教程 | 复习十一 | 状态机的特点和分类
- web测试要点及基本方法
- QT项目六:简易客户信息管理系统
- ideaIU-2017.3.4安装破解图文教程详细步骤
- Qt获取键盘按键ctrl和alt以及shift按键按下和松开
- 阿里云验证码与通知短信
- Quarkus 1.3.0.Final修复了Kubernetes本机Java堆栈中的错误