持久化ORM框架——Hibernate与mybatis
最初SUN公司推出了JavaEE服务器端组件模型(EJB),但是由于EJB配置复杂,且适用范围较小,于是很快就被淘汰了。与EJB的失败伴随而来的是另外一个框架的应运而生。他就是至今也比较流行的Hibernate。
Hibernate(适用于场景不太复杂,要求性能不苛刻)
Hibernate是建立在POJO和数据库模型的直接映射关系上的。
Hibernate是建立在若干POJO通过XML映射文件(或注解)提供的规则映射到数据库表上。换句话说,我们可以通过POJO直接操作数据库的数据。它提供的是一种全表映射的模型。相对而言,Hibernate对JDBC的封装程度还是比较高的,我们已经不需要编写SQL语言,只要适用HQL语言就可以了。
Hibernate的XML文件描述的是POJO和数据库表的映射关系。Hibernate通过配置文件(或注解)就可以把数据库的数据直接映射到POJO上,我们可以通过操作POJP做操作数据库记录。对于不擅长SQL的程序员来说,这是莫大的惊喜,因为通过Hibernate你几乎不需要编写SQL就能操作数据库的记录。
其通过建立Hibernate的工厂对象(SessionFactory),用它来做全局对象,产生Session接口,就可以操作数据库了。
  Hibernate的优势主要是:
  (1)在配置了映射文件和数据库连接文件后,Hibernate就可以通过Session操作,非常容易,消除了JDBC带来的大量代码;
(2)同时还提供了级联、缓存、映射、一对多等功能。
缺陷:
(1)全表映射带来的不便,比如更新时需要发送所有的字段。
(2)无法根据不同的条件组装不同的SQL。
(3)对多表关联和复杂SQL查询支持较差,需要自己写SQL,返回后,需要自己将数据组装成POJO。
(4)不能有效支持存储过程。
(5)虽然有HQL,但性能较差。大型互联网系统往往需要优化SQL,而Hibernate做不到。
在当今大型互联网中,灵活、SQL优化,减少数据的传递时最基本的优化方法,显然Hibernate无法满足我们的要求,于是,MyBatis框架诞生了。
MyBatis(灵活的、可以动态生成映射关系的框架)
MyBatis是一个半自动映射的框架,它需要手工匹配提供POJO,SQL和映射关系,而全表映射的Hibernate只需要提供POJO和映射关系便可。
MyBatis所需要提供的映射文件包含三个部分:
(1)SQL
(2)映射关系
(3)POJO
MyBatis需要自己编写SQL,但是支持配置动态SQL,MyBatis几乎能做到JDBC所能做到的所有事情。MyBatis具有自动映射功能。换句话说,在注意一些规则的基础上,MyBatis可以给我们完成自动映射,而无需再写任何的映射规则。
缺点:
配置工作量大。
持久化ORM框架——Hibernate与mybatis的更多相关文章
- 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化
		
准备工作 在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程.本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernat ...
 - ORM框架对比以及Mybatis配置文件详解
		
ORM框架对比以及Mybatis配置文件详解 0.数据库操作框架的历程 (1) JDBC  JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句 ...
 - orm框架的学习mybatis
		
1.数据库中的每张表,对应代码 中一个pojo类. 2.or映射是在mapper.xml文件中,指定resultType.可以指定已经定义的pojo类. 3.可以利用paramaterType指定sq ...
 - ORM框架Hibernate (一) 对DAO封装和抽象
		
说明 前面已经给大家介绍了Struts这个框架,Struts是对Web项目的表示层进行了封装,而Hibernate是对Web项目中DAO层进行封装,也即是.NET中我们常用到的D层封装,即对访问数据库 ...
 - ORM框架Hibernate (四) 一对一单向、双向关联映射
		
简介 在上一篇博客说了一下多对一映射,这里再说一下一对一关联映射,这种例子在生活中很常见,比如一个人的信息和他的身份证是一对一.又如一夫一妻制等等. 记得在Java编程思想上第一句话是“一切皆对象”, ...
 - Spring框架系列(九)--MyBatis面试题(转载)
		
1.什么是Mybatis? 1.Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动.创建 连接.创建statement ...
 - ORM框架 Mybatis、Hibernate、Spring Data JPA之到底该用谁,谁更牛*
		
在持久层框架中无可厚非的就是mybatis了,但是也会经常被人问到为啥要用mybatis,为啥不用hibernate,jpa.很多人各级都是地铁爷爷看手机的表情,似乎从来没想过这个问题.“公司叫用我就 ...
 - 持久化框架Hibernate 开发实例(一)
		
1 Hibernate简介 Hibernate框架是一个非常流行的持久化框架,其中在web开发中占据了非常重要的地位, Hibernate作为Web应用的底层,实现了对数据库操作的封装.HIberna ...
 - 5 -- Hibernate的基本用法 --1 3 流行的ORM框架简介
		
⊙ JPA : JPA本身只是一种ORM规范,并不是ORM产品.它是Java EE规范制定者向开源世界学习的结果.JPA实体与Hibernate PO十分相似,甚至JPA实体完全可作为Hibernat ...
 
随机推荐
- Do not mutate vuex store state outside mutation handlers.
			
组件代码: selectItem(item,index) { this.selectPlay({ list: this.songs, index }) }, ...mapActions([ 'sele ...
 - mysql获取汉字首字母函数
			
DELIMITER ;;CREATE FUNCTION `GET_FIRST_PINYIN_CHAR`(PARAM VARCHAR(255)) RETURNS VARCHAR(2) CHARSET u ...
 - Python基础—01-认识python,编写第一个程序
			
认识python 发展历史:点此查看简介 就业方向: WEB.爬虫.运维.数据分析.机器学习.人工智能.... 版本选择 python2.7是最后一个py2的版本,2020年将不再提供支持 pytho ...
 - python之selectors
			
selectors是select模块的包装器,ptython文档建议大部分情况使用selectors而不是直接使用selectors 样例代码如下 # -*- coding: utf-8 -*- __ ...
 - export default 和 export的使用方式
			
注意:1.export default 向外暴露的成员,可以使用任意的变量来接收 2.在一个模块中 ; export default 只允许向外暴露一次 3.在一个模块中 ; 可以同时使用 expor ...
 - Vue+Electron实现简单桌面应用
			
之前一直使用C#编写桌面应用,也顺带写一些Web端应用.最近在看node时发现常用的vscode是用electron编写的,一种想吃螃蟹的念头就涌了上来. 在网上找了找electron的资料,也研究了 ...
 - C/C++获取CPU等硬件信息&&屏幕截图
			
打算练习Socket的时候用用,最近有点小事情,没时间继续完善,先把写的这些代码贴上来,有空了再完善一下. HardwareInfo.h #include <stdio.h> #inclu ...
 - Windows之cmd指令
			
gpedit.msc-----本地计算机策略sndrec32-------录音机 Nslookup-------IP地址侦测器 explorer-------打开资源管理器 logoff------- ...
 - vue 导出流文件excel
			
第一种方法:需要设置响应类型,这里还需要安装 npm install js-file-download --save ,然后引用 var fileDownload = require('js-file ...
 - [转]ThinkPHP5 隐藏index.php问题
			
ThinkPHP5 隐藏index.php问题 Apache,修改.htaccess文件 ----------------------------------------------------- R ...