jdbc和hibernatemybatis和jdbc的区别别

在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
已开始学习的是 JDBC 后来看了 hibernate,感觉比 JDBC 麻烦,又看了 Mybatis,还是感觉比 JDBC 麻烦,特别是配置 xml
而在网上看了很多 JDBC,Mybatis,hibernate 这3个对比,性能都没法和 JDBC 对比,那为什么还出现 Mybatis,hibernate 呢?
是不是因为是初学者,一些复杂的功能还没遇到?
学 java Mybatis,hibernate 必须要学吗?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
jdbc sql都在class中的.比如未来的某一天,你需要改sql语句,你得找到源文件,修改sql.然后在编译成class.再放到服务器上,然后重启,生效.
如果框架呢.sql写在配置文件中,需要修改sql 改动配置文件就好了,(避免硬编码.)
hibernate企业开发中使用的概率逐渐减少.被mybatis取代.hibernate做稍复杂的查询不如sql来到简单.
如果您看过数据库操作框架的源码..就知道
底层还是jdbc来完成最数据库的链接的.
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
Mybatis和hibernate是对JDBC进一步的封装,底层还是基于JDBC实现的。Hibernate用的不算深入,只谈自己对Mybatis使用的感觉,相对于直接使用JDBC有以下好处:
1、JDBC释放资源的写法很容易出错,使用框架后这个问题就基本不存在了。即使用JDBC,一般也要封装一个Util类来处理,如Srping的JDBC Template,否则每个SQL语句外面包一大坨try/catch语句太麻烦了。
2、对于常见的多个选择参数的查询页面,使用mybatis的标签很容易处理多个参数组合使用的情况,相比较写JDBC的拼接字符串要容易。
3、如果项目中使用的是java的实体类,使用Mybatis可以方便的实现数据库行和对象的映射,手工写JDBC的话这部分的代码量会比较大,而且重复性很高。
性能方面,如果只比较sql语句,JDBC的性能是最好的,毕竟Mybatis和hibernate封装JDBC后框架自身还是有开销的,但Mybatis和JDBC相比,性能应该差异不大。但考虑到这两个框架都自带了缓存机制,用好的话应该比单纯的JDBC性能要高。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我想大大们都很忙,没时间回答,我就借题说下我了解一二。
操作数据库 很基础的部分,确实很麻烦,开发用它有着诸多不便(工作量上),所以有了后面几种封装后的框架。 这里多说点:它确实需要写很多东西,需要在意一些东西(如 做CRUD 时,大量数据的处理; 选择预编译的方式操作)。大公司会用这个,他们自己在这个基础上简单封装下,做些自己的处理,就可以拿来用了,他们技术能够支持,也能提高一些性能。
用后面的集成框架时能提高开发的效率
半自动化 的框架。 链接,释放,安全给你考虑的差不多了,就只需要你在xml去写 CRUD就ok了
hibernate: 全自动化框架。 这个不需要在xml写CRUD,在java代码里面写就ok
能大概看懂就成,现在这些也就是都用了一下,体会也不大深刻,以后有更深体验再补充。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
hibernate和mybatis是orm框架,底层封装了jdbc,所以效率上肯定没有jdbc高,另外你也说了jdbc麻烦,所以前面的2个框架在封装jdbc的时候,抽取了重复的步骤,使得开发者避免了这些重复工作,开发更高效快速了。另外企业开发都讲究开发效率,节约成本,所以企业会大量使用。另外建议初学者不要这么快接触框架,先学好java se和java ee,做点东西,再去学框架,这样比较好理解;也会让你认识到开发大一点应用其实这些框架还是必须的:能提高很多开发效率
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
jdbc是基础,但是快速开发起来麻烦,于是产生了ORM,Hibernate是想向开发人员屏蔽关系数据库的模型,但是代价太大,学习成本高,需要搞懂对象的各种单向双向等关系;mybatis是半orm,同样也是提升效率,采取更轻量级的模式。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:关于这个问题网上讨论的很多,多查查其实也大概清楚了。
我说点自己的体会吧
其实刚开始用hibernate时,也没觉得有多方便,感觉配置好复杂,什么状态、关联、缓存搞不清,而且复杂的查询很难实现。开发起来缩手缩脚,如履薄冰,觉得没有jdbc来的灵活,随心所欲。
hibernate用多了之后再使用jdbc,感觉jdbc好烦,老是要对应你数据库中的字段和程序中的实体。比如查询操作,hibernate中一句load(class,id) 就好了,而jdbc一直写rs.get(&你数据库字段名") ,你要一直对照数据库。hibernate的开发效率确实要高很多。
还有一点感触,jdbc和数据库耦合太高,要换数据库的话,代价大。
不知道你具体要了解些什么,希望对你有所帮助。
--------------------------
hibernate封装了轻量级的Jdbc组件,hql语句是面向对象的比较简单,
Jdbc操纵的是变量,是瞬时的和数据库的值不一致,Hibernate操纵的是对象,对象的值和数据库的值保持一致
hibernate 在表多的时候,表与表之间的关系比较复杂,不易操作
****************************************************
hibernate连接与JDBC连接的区别
1.hibernate和jdbc主要区别就是,hibernate先检索缓存中的映射对象( 即hibernate操作的是对象),而jdbc则是直接操作数据库.
2.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合
3.Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。
还有一点,正确的使用JDBC技术,它的效率一定比hibernate要好,因为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缓冲。
本文已收录于以下专栏:
相关文章推荐
从层次上看,JDBC是较底层的持久层操作方式,而Hibernate和MyBatis都是在JDBC的基础上进行了封装使其更加方便程序员对持久层的操作。从功能上看,JDBC就是简单的建立数据库连接,然后创...
首先,让我们回顾一下。在上一个博客中写道“使用传统的JDBC编程来操作数据”,详见http://blog.csdn.net/zwg_html/article/details/让我们来总...
全手动、自动化、半自动化
jdbc:      
什么都要自己弄,SQL语句是在java代码中写的。
hibernate:提供了全面的数据库封装机制的“全自动化” ORM
实现而言,“全自动”...
原生态的jdbc的存在的问题:
1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
设想:使用数据库连接池管理数据库连接。
...
Hibernate其实是对JDBC一种轻量级的封装,楼下的某些朋友一看回答的水平就知道根本就没怎么接触过hibernate,今天我就给你好好的介绍下:
Hibetnate一般用做持久层,刚刚也说过了...
什么是JDBC?
Java语言访问数据库的一种规范,是一套API。JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接...
二者的联系:
JDBC是java应用程序连接数据库,进行数据存取的一种机制,是一组用java语言编写的类和接口的API,它和数据库之间由各个厂商提供的数据库驱动进行关联。
hibernat...
hibernate和jdbC都是操作数据库的框架,那么既然有了jdbC,为什么又要学习hibernate呢?
首先我们先来了解一下它们各自的优缺点。
1、查询语句比较繁琐 ...
mybatis,jdbc,hibernate的比较,优缺点
       直接底层操作,提供了很简单、便捷的访问数据库的方法,跨平台性比较强。灵活性比较强,可以写很复杂的SQL语句。支持连接池。
      ...
他的最新文章
讲师:钟钦成
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)本帖子已过去太久远了,不再提供回复功能。JDBC与Hibernate区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JDBC与Hibernate区别
&&JDBC与Hibernate区别
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 jpa和hibernate的区别 的文章

 

随机推荐