Mybatis框架 和Hibernate框架的区别是什么 (mybatisplus)
本文目录导航:
Mybatis框架,和Hibernate框架的区别是什么?
1Hibernate : 规范的ORM(对象相关映射) 框架; 不要用写sql, sql 智能语句生成;经常使用Hibernate 对sql 启动提升,修反比拟艰巨运行场景: 试用需求,变动固定中小型名目;ERP,ORM,OA2 mybatis: 程序员自己编写sql, sql 修正,提升比拟自在。
mybatis 是一个不齐全的ORM 框架(局部), mybatis 存在 映射相关(输入,输入映射);运行场景: 除了hibernate 的场景,重要运行需求名目较多的场景, 互联网名目; 矫捷开发。
映射相关形容hibernate: 对数据库结构提供了较为完整的封装,hibernate 的O/R Mapping成功了POJO 和数据库表之间的映射,以及SQL 的智能生成和口头。
只需定义好了POJO 到数据库表的映射相关,即可经过提供的方法成功耐久层操作。
不须要对SQL 的熟练把握, 会依据制订的存储逻辑,智能生成对应的SQL 并调用JDBC 接口加以口头。
mybatis:POJO SQL之间的映射相关。
而后经过映射性能文件,将SQL所需的参数,以及前往的结果字段映射到指定POJO。
相对“O/R”而言,iBATIS 是一种“Sql Mapping”的ORM成功。
数据库的有关性:hibernate 的 详细数据只须要应用xml 启动关联; HQL 语句与数据库有关mybatis 更凑近sql ,因此对数据库的依赖较多。
Mybatis优势MyBatis可以启动更为粗疏的SQL提升,可以缩小查问字段。
MyBatis容易把握,而Hibernate门槛较高。
Hibernate优势Hibernate的DAO层开发比MyBatis繁难,Mybatis须要保养SQL和结果映射。
Hibernate对对象的保养缓和存要比MyBatis好,对增删改查的对象的保养要繁难。
Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库须要写不同SQL。
Hibernate有更好的二级缓存机制,可以经常使用第三方缓存。
MyBatis自身提供的缓存机制不佳
hibernate框架的好处
一、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象耐久层框架,和App Server,和EJB没有什么肯定的咨询。
Hibernate可以用在任何JDBC可以经常使用的场所,例如Java运行程序的数据库访问代码,DAO接口的成功类,甚至可以是BMP外面的访问数据库的代码。
从这个意义过去说,Hibernate和EB不是一个领域的物品,也不存在非此即彼的相关。
二、Hibernate是一个和JDBC亲密关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有肯定的相关,然而和经常使用它的Java程序,和App Server没有任何相关,也不存在兼容性疑问。
三、Hibernate不能用来间接和Entity Bean做对比,只要放在整个J2EE名目标框架中能力比拟。
并且即使是放在软件全体框架中来看,Hibernate也是做为JDBC的代替者产生的,而不是Entity Bean的代替者产生的,让我再列一次性我曾经列n次的框架结构:传统的架构:1) Session Bean <-> Entity Bean <-> DB为了处置性能阻碍的代替架构:2) Session Bean <-> DAO <-> JDBC <-> DB经常使用Hibernate来提高下面架构的开发效率的架构:3) Session Bean <-> DAO <-> Hibernate <-> DB 就下面3个架构来剖析:1、内存消耗:驳回JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。
2、运转效率:假设JDBC的代码写的十分提升,那么JDBC架构运转效率最高,然而实践名目中,这一点简直做不到,这须要程序员十分知晓JDBC,运用Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的状况下驳回结果集cache等等。
而普通状况下程序员是做不到这一点的。
因此Hibernate架构体现出最快的运转效率。
EB的架构效率会差的很远。
3、开发效率:在有JBuilder的允许下以及繁难的名目,EB架构开发效率最高,JDBC次之,Hibernate最差。
然而在大的名目,特意是耐久层相关映射很复杂的状况下,Hibernate效率高的惊人,JDBC次之,而EB架构很或者会失败。
4、散布式,安保审核,集群,负载平衡的允许由于有SB做为Facade,3个架构没有区别。
四、EB和Hibernate学习难度在哪里?EB的难度在哪里?不在复杂的XML性能文件上,而在于EB运用稍微不慎,就有重大的性能阻碍。
所以难在你须要学习很多EJB设计形式来避开性能疑问,须要学习App Server和EB的性能来提升EB的运转效率。
做EB的开发上班,程序员的大局部精神都被放到了EB的性能疑问上了,反而没有更多的精神关注自身就重要投入精神去思考的对象耐久层的设计过去。
Hibernate难在哪里?不在Hibernate自身的复杂,实践上Hibernate十分的繁难,难在Hibernate太灵敏了。
当你用EB来成功耐久层的时刻,你会发现EB真实是太蠢笨了,蠢笨到你基本没有什么可以选用的余地,所以你基本就不用破费精神去设计打算,去平衡打算的好坏,去费脑筋思考选用哪个打算,由于只要惟一的打算摆在你背地,你只能这么做,没得选用。
Hibernate相反,它太灵敏了,相反的疑问,你至少可以设计出十几种打算来处置,所以特意的犯难,终究用这个,还是用那个呢?这些打算之间究竟有什么区别呢?他们的运转原理有什么不同?运转效率哪个比拟好?光是主键生成,就有七八种打算供你选用,你尴尬不尴尬?汇合属性可以用Set,可以用List,还可以用Bag,究竟哪个效率高,你尴尬不尴尬?查问可以用iterator,可以用list,哪个好,有什么区别?你尴尬不尴尬?复合主键你可以间接在hbm外面性能,也可以自定义CustomerType,哪种比拟好些?你尴尬不尴尬?关于一个表,你可以选用繁多映射一个对象,也可以映射成父子对象,还可以映射成两个1:1的对象,在什么状况下用哪种打算比拟好,你尴尬不尴尬?这个列表可以不时开列下去,直到你不想再看下去为止。
当你背地摆着有数的目迷五色的打算的时刻,你会感觉幸福呢?还是悲痛呢?假设你是一个担任的程序员,那么你肯定会细心钻研每种打算的区别,每种打算的效率,每种打算的实用场所,你会感觉你曾经堕入出来拔不出来了。
假设是用EB,你第一秒种就曾经做出了选择,基本没得选用,比如说汇合属性,你只能用Collection,假设是Hibernate,你会在Bag,List和Set之间来回优柔寡断,甚至搞不分明的话,程序都没有方法写。
hibernate与spring的重要优势?
hibernate框架是对jdbc的轻量级别封装,可以运行于任何须要jdbc的场所,它是一个orm(object relation mapping)对象相关映射框架,将传统的相关型数据库模型映射为面向对象的数据库模型,与面向对象的编程思维不约而同,将数据库中的表,映射成pojo对象,使得表中记载看下来像一个JAVA对象一样,封装了向dbms传递sql语句的接口,将程序员从编写复杂少量的SQL语句中摆脱出来,即使sql基础不好的程序员,也能应用hibernate框架提供的api极速成功对数据库的curd(create ,update,read,delete)增删改查操作,上手快,且中运行广,是一个orm的盛行框架. spring框架是个轻量级框架,所谓轻量级1体如今不依赖于容器(不须要特定的容器环境,普通java开发和运转环境即可),2非侵入性(和其余框架松懈耦合,可联结作战,可无缝衔接,也可独自作战)例如spring可与struts与hibernate框架联结经常使用spring可以起到穿针引线的作用,就如同 我要组装一个机器人struts假设是双臂,hibernate是双腿,spring就是衔接它们的身材大框使他们联结上班,spring有两个外围模块,1 ioc/di, 2 aop ioc控制翻转/di依赖注入(ioc成功以容器治理对象的生命周期/di成功面向接口的编程思维,成功高内聚低耦合的设计形式,详细请参考spring的有关书籍不是一两句话能让你明确,宿愿能抛砖引玉)aop面向切面的编程思维(比如spring提供现成的数据库事物处置模块只需经过繁难性能就能成功事物处置性能,不须要程序员再手动编写有关技术处置该方面的代码,让你转心专一于你的名目业务代码的编写,经过繁难的性能成功和软件重要业务内容有关的技术处置层面代码)正如楼上所说spring就像一个粘合剂一样使得您的名目中各个框架组成一个无机的全体.