• 也用了这么久的Hibernate和MyBatis了,一直打算做一个总结,就他们之间的优缺点说说我自己的理解:

  1. 首先,Hibernate是一个ORM的持久层框架,它使用对象和我们的数据库建立关系,在Hibernate中,操作数据库实际上时通过对象状态的改变来改变数据中对应表的值,此时就是通过hql来操作数据库的,就不在通过sql来直接操作我们的数据库。
    • 我认为,最能体现Hibernate的面向对象的方法来操作数据库的一点,就是:在新创建一个对象后,在调用Hibernate的save方法时,此时HIbernate并不会发送插入数据的sql,而是等到我们的session刷新,事务提交的时候,Hibernate才会发送一条插入数据的sql.这是因为,Hibernate是根据对象的状态来更改其数据库中对应的表的,上面所说的新建一个对象时,此时这个对象处于临时状态,而在调用了save方法之后,该对象就处于了持久化状态,此后,当Hibernate进行session刷新,事务提交后,就会将由临时状态变成了持久化状态的这个对象持久化到数据库中相应的表中。
    • 具体的,对象的状态分为:
      • 临时状态:
      1. 对象刚被new出来,没有id.
      2. 删除状态的对象的在session刷新,事务提交之后,也是临时状态。(此时通过在hibernate.properties文件中配置use_identifier_rollback可以是改对象的id为null)。
      • 持久化状态:
      1. 对象有id,并且被session管理。
        • save方法将临时对象或者游离对象变成持久化对象。
        • get方法返回的时持久化的对象。
        • load方法返回的是持久化对象。
        • Query.list返回的是持久化对象。不过在大数据处理时需要即时清理缓存。
        • update将游离对象变成持久化对象。
      • 持久化状态:
      1. 对象有id,但是不处于session的管理之下。
        • session.close将当前被关闭的session中的所有持久化对象全部变成游离对象。
        • session.clear将当前被清理的session中的所有持久化对象全部变成游离对象。
        • session.evict(Object)将指定对象变成游离对象。
      • 删除状态:
      1. 对象有id,但是计划被删除。
        • delete方法将持久化对象变成删除状态,但是需要在session刷新,事务提交后才会更改到数据库。

2.其次,MyBatis则时仍然是基于sql查询的方式,他通过将查询结果列设置到我们指定的对象的属性中,其本质上我们的对象和数据库并无直接关系,我们使用的仍然是sql。

MyBatis学习总结_18_MyBatis与Hibernate区别的更多相关文章

  1. mybatis学习$与#号取值区别

    1,多个参数传递用map或实体封装后再传给myBatis, mybatis学习$与#号取值区别 #{} 1.加了单引号,  2.#号写是可以防止sql注入,比较安全 select * from use ...

  2. Mybatis与Hibernate区别

    Mybatis与Hibernate区别 mybatis: 1. 入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美 ...

  3. mybatis&Hibernate区别

    mybatis是一个不完全的orm框架,因为mybatis需要程序员自己写大量的sql,需要程序员对sql的掌握比较高,不过mybatis可以通过xml文件可以灵活的配置要运行的sql语句,将sql与 ...

  4. SpringMVC的工作流程?Mybatis和hibernate区别?

    SpringMVC的工作流程?1. 用户发送请求至前端控制器DispatcherServlet2. DispatcherServlet收到请求调用HandlerMapping处理器映射器.3. 处理器 ...

  5. mybatis学习笔记一(入门)

    昨天看了一下mybatis,学习了一下有很多东西还不懂,但是想把一些知道的记录一下,如有错误请大家多多指点. mybatis它是apche的一个开源项目,它以前的没名字并不是叫mybatis而是叫ib ...

  6. Mybatis学习笔记一

    Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为M ...

  7. Mybatis 学习总结

    1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 public static void main(String[] args) { Connection conn ...

  8. Mybatis学习---基础知识考核

    MyBatis 2.什么是MyBatis的接口绑定,有什么好处 接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,    我们直接调用接口方法就可以,这样比起原来了Sql ...

  9. Mybatis学习笔记(一) —— mybatis介绍

    一.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...

随机推荐

  1. 微软职位内部推荐-SDE II

    微软近期Open的职位: Senior Software Development Engineer Job Title: Senior Development Engineer Division: V ...

  2. online training

    https://www.skillfeed.com/browse http://teamtreehouse.com/features http://www.pluralsight.com/ https ...

  3. jta.properties transactions.properties Log already in use 解决方法

    当在resin里跑多个含有atomikos控制事物的项目时,会报错,Log already in use. 解决方法: 加jta.properties或者transactions.properties ...

  4. mui开发webapp(1)

    mui开发注意事项 Mui HTML5开发框架 mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细 ...

  5. File "/struts-tags" not found

    前言 由于在某个jsp引用了struts标签库,导致该错误产生--这是stuts项目算是一道经典错误,往往最后的解决方式是更换Tomcat.今天我记录的是引起这一错误的一个非常隐藏的原因. 错误描述 ...

  6. JS--事件对象中部份浏览器不兼容方法

    测试时主要用的浏览器是Firefox 28.0.IE11.IE8.Chrome 34.0  一.什么是事件对象:当触发某个事件的时候,会产生一个事件对象,这个对象包含着所有的与事件有关的信息,包括导致 ...

  7. spring.net +dapper 打造简易的DataAccess 工具类.

    public class DBUtil { /// <summary> /// 数据库连接字符串 /// </summary> private static string Da ...

  8. windows下安装php5.2.*,php5.3.*,php5.4.*版本的memcache扩展(转)

    拓展安装调试方法: 编写调试php文件 <?php  memcache();  通过命令行执行测试,因为php拓展安装成功与否与apache无关,所以没必要不断重启apache去看phpinfo ...

  9. mydate97时间控件最大值最小值限制及Javascript日期判断大小

    <script language="javascript" type="text/javascript" src="<%=basePath ...

  10. Grid分组特性

    Ext.onReady(function () {                Ext.define('personInfo', {                    extend: 'Ext. ...