`

Hibernate与JDBC的优缺点

阅读更多

由于菜鸟我该出去找工作,所以找了一些面试题看看,有一道题是:请谈谈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陷阱等),开发者如果不注意就会调入陷阱而不知,这样就可能会出现一些无法排查的异常情况,比如程序表面上看着毫无错误,可就是达不到预期的效果,而且并无异常抛出,断点排查也不一定能找到症结所在,这将是非常令人抓狂的一件事!!!!!

 

 

上面这些是我自己的一些理解和总结,不足之处,请各位大神补充指出,谢谢,您的建议和批评将是我进步的机会,非常感谢!

2
0
分享到:
评论

相关推荐

    jdbc与hibernate的优缺点比较(转载的精髓).pdf

    。。。

    删掉,复制别人东西,怕侵权,原本只想收藏的

    先比较下jdbc编程和hibernate编程各自的优缺点。 JDBC: 我们平时使用jdbc进行编程,大致需要下面几个步骤: 1,使用jdbc编程需要连接数据库,注册驱动和数据库信息 2,操作Connection,打开Statement对象 3,...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     20.5 Java应用通过Hibernate API声明JDBC事务  20.5.1 处理异常  20.5.2 Session与事务的关系  20.5.3 设定事务超时  20.6 Java应用通过Hibernate API声明JTA事务  20.7 Java应用通过JTA API声明JTA事务  ...

    搞定J2EE核心技术与企业应用:Ajax,JSP,Struts2,Spring,Hibernate,完整扫描版

    首先对javaee的来源、整体框架和核心技术,以及mvc模式的设计思想、规范及优缺点进行了讲解;然后对java web环境的建立、数据库的搭建、一些基本技术(比如javascript、jsp、servlet、jdbc)进行了讲解;接着对ajax...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    1.1.4 软件分层的缺点 4 1.1.5 Java应用的持久化层 5 1.2 软件的模型 6 1.2.1 概念模型 7 1.2.2 关系数据模型 8 1.2.3 域模型 10 1.2.4 域对象 10 1.2.5 域对象之间的关系 11 1.2.6 域对象的持久化概念 17 ...

    hibernate完整学习

    也是处理对象和关系模型之间的转换,只是对JDBC做了一层封装 优点: 1.程序员操作很简单,代码简单 session.save(user); 2.直接面向对象操作 jsp:user.name,user,password action:setUser dao:user 3.提供...

    MyBatis面试题 37道1

    2. Mybatis优缺点 3. Hibernate 和 MyBatis 的区别 4. 为什么说Mybatis是半自动ORM映射工具 5. 传统JDBC开发存在

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     20.5 Java应用通过Hibernate API声明JDBC事务  20.5.1 处理异常  20.5.2 Session与事务的关系  20.5.3 设定事务超时  20.6 Java应用通过Hibernate API声明JTA事务  20.7 Java应用通过JTA API声明JTA事务  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     20.5 Java应用通过Hibernate API声明JDBC事务  20.5.1 处理异常  20.5.2 Session与事务的关系  20.5.3 设定事务超时  20.6 Java应用通过Hibernate API声明JTA事务  20.7 Java应用通过JTA API声明JTA事务  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     20.5 Java应用通过Hibernate API声明JDBC事务  20.5.1 处理异常  20.5.2 Session与事务的关系  20.5.3 设定事务超时  20.6 Java应用通过Hibernate API声明JTA事务  20.7 Java应用通过JTA API声明JTA事务  ...

    Web开发+java+ssh框架

    二、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在 兼容性问题。 三、Hibernate不能用来直接和...

    hibernate框架说明.txt

    JDBC的缺点: 1。JDBC本质:编写sql语句,发送到数据库中执行(sql) 在企业开发需要程序员转换编程的思想,从面向对象到sql。 2。JDBC代码太过于繁琐,容易出错。 3。ORM对象关系映射框架:Object Relation ...

    精通Hibernate:对象持久化技术第二版part3

    1.1.4 软件分层的缺点 4 1.1.5 Java应用的持久化层 5 1.2 软件的模型 6 1.2.1 概念模型 7 1.2.2 关系数据模型 8 1.2.3 域模型 10 1.2.4 域对象 10 1.2.5 域对象之间的关系 11 1.2.6 域对象的持久化概念 17 ...

    MyBatis经典面试题详细

    Mybatis优缺点 MyBatis框架适用场景 Hibernate 和 MyBatis 的区别 MyBatis的解析和运行原理 MyBatis编程步骤是什么样的? 请说说MyBatis的工作原理 MyBatis的功能架构是怎样的 MyBatis的框架架构设计是怎么样的 为...

    MyBatis学习资料

    3. 优缺点 (1) 优点 a) 与JDBC比较 减少代码量 Sql与程序代码分离 简单 增强了移植性 b) 与Ibatis2.0比较 Mybatis实现了接口绑定,使用更加方便。 对象关系映射的改进,效率更高 ...

    Java面试宝典2020修订版V1.0.1.doc

    16、hibernate优缺点? 92 17、Hibernate是如何延迟加载的? 93 18、如果优化Hibernate? 93 19、什么是ORM? 94 20、Hibernate的主键生成策略? 94 21、Hibernate的级联操作 94 22、Hibernate有哪5个核心接口? 95 ...

    Spring与iBATIS的集成

    最后,还讨论了iBATIS的优缺点,及为什么是这样的一种方式,即所谓的“在完全OR与JDBC之间的一个幽雅的折衷。” <br>就象Developer's Notebook 系列中所有的书一样,你将由直接的且实用的方式获得信息,这些信息...

    77道Spring面试题以及参考答案(2024年最新版)

    1. Spring概述部分介绍了Spring的定义、设计理念、优缺点、组成模块等基础知识。 2. IoC和DI部分重点解释了IoC容器、依赖注入的原理和作用。 3. Spring Bean部分围绕Bean的生命周期、作用域、自动装配等进行了详细...

    最新Java面试宝典pdf版

    10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? ...

Global site tag (gtag.js) - Google Analytics