持久化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 ...
随机推荐
- MySQL存储引擎与索引
引言: MySQL存储引擎主要分为 InnoDB 存储引擎与 MyISAM 存储引擎.都采用B+数的存储结构. 应用场景: InnoDB适合:(1)可靠性要求比较高,要求事务:(2)大量 insert ...
- 数据恢复顾问(DRA)
(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能够修复数据文件和(某些环境下)控制文件的损坏,它不提供spfile和logfile的修复 ...
- 使用js获取表单元素的值
function getParams(formName) { var frmMain = document.getElementById(formName)?document.getElementBy ...
- python使用sqlalchemy连接mysql数据库
环境:centos7+python2.7.5+sqlalchemy sqlalchemy是python当中比较出名的orm程序.在python中,使用sqlalchemy连接mysql数据库进行操作非 ...
- Python函数中参数类型
在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...
- BZOJ1607: [Usaco2008 Dec]Patting Heads 轻拍牛头(模拟 调和级数)
Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 3031 Solved: 1596[Submit][Status][Discuss] Descriptio ...
- ABAP术语-Business Connector
Business Connector 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/27/1016379.html XML-based st ...
- /etc/fstab开机自动挂载设备配置
第一列:设备名字(路径?) 第二列:设备挂载路径(挂载到的位置) 第三列:分区格式 第四列:文件系统参数(?) 第五列:是否自动dump备份 0 不要 1 定期 2 不定期 第六 ...
- css实现未知元素宽高垂直居中和水平居中的方法
第一种:display:table-cell的方式 .container { /*父级容器*/ display:table-cell; text-align:center; vertical-alig ...
- SSH远程登录和端口转发详解
SSH远程登录和端口转发详解 介绍 SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境. SSH 只是协议,有多种实现方式,本文基于其开源实 ...