由于菜鸟我该出去找工作,所以找了一些面试题看看,有一道题是:请谈谈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陷阱等),开发者如果不注意就会调入陷阱而不知,这样就可能会出现一些无法排查的异常情况,比如程序表面上看着毫无错误,可就是达不到预期的效果,而且并无异常抛出,断点排查也不一定能找到症结所在,这将是非常令人抓狂的一件事!!!!!
上面这些是我自己的一些理解和总结,不足之处,请各位大神补充指出,谢谢,您的建议和批评将是我进步的机会,非常感谢!
分享到:
相关推荐
。。。
先比较下jdbc编程和hibernate编程各自的优缺点。 JDBC: 我们平时使用jdbc进行编程,大致需要下面几个步骤: 1,使用jdbc编程需要连接数据库,注册驱动和数据库信息 2,操作Connection,打开Statement对象 3,...
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事务 ...
首先对javaee的来源、整体框架和核心技术,以及mvc模式的设计思想、规范及优缺点进行了讲解;然后对java web环境的建立、数据库的搭建、一些基本技术(比如javascript、jsp、servlet、jdbc)进行了讲解;接着对ajax...
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 ...
也是处理对象和关系模型之间的转换,只是对JDBC做了一层封装 优点: 1.程序员操作很简单,代码简单 session.save(user); 2.直接面向对象操作 jsp:user.name,user,password action:setUser dao:user 3.提供...
2. Mybatis优缺点 3. Hibernate 和 MyBatis 的区别 4. 为什么说Mybatis是半自动ORM映射工具 5. 传统JDBC开发存在
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事务 ...
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事务 ...
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是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在 兼容性问题。 三、Hibernate不能用来直接和...
JDBC的缺点: 1。JDBC本质:编写sql语句,发送到数据库中执行(sql) 在企业开发需要程序员转换编程的思想,从面向对象到sql。 2。JDBC代码太过于繁琐,容易出错。 3。ORM对象关系映射框架:Object Relation ...
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框架适用场景 Hibernate 和 MyBatis 的区别 MyBatis的解析和运行原理 MyBatis编程步骤是什么样的? 请说说MyBatis的工作原理 MyBatis的功能架构是怎样的 MyBatis的框架架构设计是怎么样的 为...
3. 优缺点 (1) 优点 a) 与JDBC比较 减少代码量 Sql与程序代码分离 简单 增强了移植性 b) 与Ibatis2.0比较 Mybatis实现了接口绑定,使用更加方便。 对象关系映射的改进,效率更高 ...
16、hibernate优缺点? 92 17、Hibernate是如何延迟加载的? 93 18、如果优化Hibernate? 93 19、什么是ORM? 94 20、Hibernate的主键生成策略? 94 21、Hibernate的级联操作 94 22、Hibernate有哪5个核心接口? 95 ...
最后,还讨论了iBATIS的优缺点,及为什么是这样的一种方式,即所谓的“在完全OR与JDBC之间的一个幽雅的折衷。” <br>就象Developer's Notebook 系列中所有的书一样,你将由直接的且实用的方式获得信息,这些信息...
1. Spring概述部分介绍了Spring的定义、设计理念、优缺点、组成模块等基础知识。 2. IoC和DI部分重点解释了IoC容器、依赖注入的原理和作用。 3. Spring Bean部分围绕Bean的生命周期、作用域、自动装配等进行了详细...
10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? ...