mybatis VS hibernate

hibernate简介:Hibernate是一款工作在持久化层的大型、开源、免费的ORM(Object Relationship Mapping 对象关系映射)框架

特点:1)将对数据库的操作转换为为对象Java对象的操作,从而简化开发。通过修改一个“持久化”对象的属性从而修改数据库表中对应的记录数据。通过操作对象达到数据库的目的。

  2)提供线程和进程两个级别的缓存提升应用程序性能;缓存:查询数据后在缓存中进行保存,下次查询相同数据直接从缓存中读取,减少数据库操作。

  3)在丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系。

  4)屏蔽不同数据实现之间的差异。在Hibernate中只需要通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生存合适的SQL语句。

mybatis简介:MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,MyBatis消除了几乎所有JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs映射成数据库中的记录。

优势:轻巧:Hibernate核心包4.4M,MyBatis核心包698K。

   高效:比Hibernate运行效率高

   解耦:SQL语句与Java代码相分离,易于单独维护与优化

缺陷:1)SQL工作量很大,尤其是字段多,关联表多时,更是如此

   2)SQL依赖于数据库,导致数据库移植性差

   3)由于XML中标签id必须唯一,导致Dao中的方法不支持重载

   4)字段映射标签和对象关系映射标签仅仅是映射关系的描述,具体实现仍然依赖于SQL

   5)不支持级联更新,级联删除

两者相同点:1)从配置文件中获取sessionfactory

      2)由sessionfactory产生session

      3)在session中完成对数据的增删改查和事务提交

      4)在用完之后关闭session

       5)在Java对象和数据库之间有做mapping的配置文件,也通常是xml文件

两者区别:1)Hibernate是全自动的完全可以通过对象关系模型实现对数据库的操作,自动生存sql语句,而MyBatis仅有基本的字段映射,仍需手写sql

  2)Hibernate数据库移植形远大于MyBatis

  3)Hibernate拥有完整的日志系统,MyBatis则欠缺些

结语:虽然Hibernate较MyBatis有很多优势,但是MyBatis入门较为简单,可以很好的延续SQL使用经验,而且Hibernate完全依赖配置自动生成SQL语句,无法直接维护甚至优化SQL语句,即使有HQL语句,但面对一些业务逻辑较为复杂的关系,依然无法满足需求,因此最终如何选择,还得仔细衡量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值