持久化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 ...
随机推荐
- Java的技术体系结构
作为程序开发者,我们都想写出完美的代码,但世界上好像从来都没有过完美的代码,因为代码牵涉的内容很复杂,有程序设计语言.运行环境.数据结构以及算法等等,而开发者往往很难全面精通,再者写代码本来也就是一个 ...
- django-模板层基础2
1.模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头 部不需要改变),那么这样我们可以把那个头部重新写在一 ...
- c++ 数字和字符串的相互转换
需要包含头文件<sstream> 字符串转化为int #include<stdio.h> #include<string.h> #include<iostre ...
- Linux下NFS服务器的搭建与配置(转载)
一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...
- shell 输出带颜色字体
输出特效格式控制:\033[0m 关闭所有属性 \033[1m 设置高亮度 \03[4m 下划线 \033[5m 闪烁 \033[7m 反显 \033[8m 消隐 \ ...
- android Service服务简介(一)
作为android的四大组件之一,服务也少不了很多重要的知识点.下面我们从最基本的开始学习. 1.1服务的创建 首先创建一个ServiceTest类继承Service.我们会重写onCreate(), ...
- android 自定义图片圆形进度条
感觉话一个圆形进度条挺简单的 ,但是却偏偏给了几张图片让你话,说实话我没接触过,感觉好难,还好百度有大把的资源,一番努力下终于画出来了. 代码如下. package com.etong.cpms.wi ...
- QQ群认证 人数再度扩容 权限随之升级
群排名,得资源得天;之于排名,群容量有杠杆意义. 而今,流量分散,打法完全无法集中,全平台战略,越发凸显.QQ群,已是必争之地. 去年,Q群霸屏春天,一切那么顺其自然;而今,除了拼资源,还是拼资源.除 ...
- php-5.6.26源代码 - hash存储结构 - 初始化
初始化 有指定析构函数,在销毁hash的时候会调用,如:“类似extension=test.so扩展”也是存放在HashTable中的,“类似extension=test.so扩展”的module_s ...
- PHP判断URL地址百度是否已经收录并主动提交MIP数据
/** * PHP检测URL地址百度是否已经收录 * @param string $url 要检测的URL地址 */ function Baidu($url) { $url = 'http://www ...