由于菜鸟我该出去找工作,所以找了一些面试题看看,有一道题是:请谈谈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**,一个强大的对象关系映射(ORM)框架。 **Hibernate** 提供了一种抽象层,将Java对象与数据库表之间的映射自动化,...
标题中的“jdbc与hibernate的优缺点比较”是一个关于两种主流Java数据库访问技术的讨论。JDBC(Java Database Connectivity)是Java中用于与数据库交互的一组接口和类,而Hibernate是一个对象关系映射(ORM)框架,...
首先,JDBC(Java Database Connectivity)是Java平台的标准接口,它允许Java程序与各种数据库进行交互。JDBC提供了连接数据库、发送SQL语句、处理结果集等基本功能。使用JDBC进行测试时,通常会编写SQL语句,通过...
Struts、Spring 和 Hibernate 是Java Web开发中三大主流的开源框架,它们各自有着独特的功能和优缺点。在构建企业级应用程序时,理解这些框架的核心特性以及它们如何相互补充至关重要。 Struts 是一个基于MVC...
本文将深入探讨这两种技术,并对比它们的特点、优缺点以及适用场景。 Hibernate是一种强大的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。通过Hibernate,开发者可以使用面向对象的方式来...
JDBC(Java Database Connectivity)和Hibernate是两种不同的Java数据库访问技术,它们各有优缺点,适用于不同的场景。 **相同点:** 1. **中间件角色**:两者都是Java平台上的数据库操作中间件,允许开发者通过...
6. **JDBC和ORM支持**:与Hibernate等O/R Mapping工具集成,简化数据库访问。 7. **JNDI抽象**:提供对JNDI服务的抽象,便于切换服务实现。 8. **事务管理**:通过AOP实现声明式事务管理,简化事务控制。 9. **邮件...
Java操作MySQL数据库是Web开发中的常见任务,而JDBC(Java Database Connectivity)是Java与数据库交互的基础。...同时,通过对比和实践,你还可以深入理解每种技术的优缺点,以便在未来的工作中做出明智的选择。
下面我们将深入探讨SSH框架的优缺点。 **一、Struts2** Struts2是基于MVC设计模式的Web应用框架,它继承了Struts1的优点并解决了其不足。其主要优点包括: 1. **灵活的拦截器机制**:Struts2使用拦截器来处理请求,...
JDBC 的优缺点 **JDBC的优点**: - 直接与数据库交互,提供了简单且跨平台的接口。 - 具有高度灵活性,允许编写复杂的SQL语句。 **JDBC的缺点**: - 面向过程,无法充分利用面向对象编程的优势。 - 代码重复多,如...
### Hibernate与JDBC的区别、优缺点 #### 一、概述 Hibernate 和 JDBC 是两种常见的 Java 数据库访问技术,它们在数据库交互方面各有千秋。理解这两种技术的特点有助于开发者选择最适合项目需求的技术方案。 ####...
标题 "Oracle分别使用JDBC和...学习这些知识点对于任何Java开发者来说都是必要的,特别是在处理企业级应用时,理解何时使用JDBC,何时选择Hibernate,以及如何有效利用它们与Oracle数据库的集成,都是至关重要的。
先比较下jdbc编程和hibernate编程各自的优缺点。 JDBC: 我们平时使用jdbc进行编程,大致需要下面几个步骤: 1,使用jdbc编程需要连接数据库,注册驱动和数据库信息 2,操作Connection,打开Statement对象 3,...
这三种技术各有优缺点。MyBatis轻量级且灵活,适合需要精细化控制SQL的场景;Spring JDBC则提供了更好的事务管理和异常处理;而Hibernate则在对象关系映射上做得非常出色,对于复杂的企业级应用更为适用。 在实际...
二、Hibernate优缺点 1. 优点: - 提高开发效率,减少编写数据库操作的代码。 - Hibernate使用Java反射机制,实现了对象和数据库之间的透明性。 - 性能良好,作为一个轻量级框架,它的映射灵活性高。 - 提供了...
1. 说明:把 16,17,18 这三行代码的对象的状态称为临时对象,其特征是该对象与 Hibernate 没有关系。 2. 说明:当执行 19 行代码的时候,person 对象由临时状态转化成持久化状态,这个时候数据库没有对应的数据,...
- "2018-7-27-Hibernate-检索方式.pptx"可能涵盖了Hibernate的多种检索方式,如Query、Criteria、HQL等,以及它们的使用场景和优缺点。 - "04-2018-7-8-Hibernate-functiongtest.pptx"可能是关于函数测试和Hibernate...
**JDBC的优缺点** 优点:JDBC提供了标准化的API,使得开发人员可以轻松地在不同的数据库之间迁移;它支持多种数据库,具有广泛的兼容性。 缺点:使用原生的JDBC编写数据库操作代码较为繁琐,需要手动管理连接和事务...