网站规划与建设的案例分析,flex网站模板,电商站点是什么意思,网络推广的具体方式mybatis和hibernate 第一步#xff0c; 首先让我们对mybatis和hibernate对比了解下 1、 Hibernate #xff1a;Hibernate 是当前非常流行的ORM框架#xff0c;对数据库结构提供了较为完整的封装#xff0c;都是为了简化Dao层的操作。Mybatis#xff1a;Mybatis同…mybatis和hibernate 第一步 首先让我们对mybatis和hibernate对比了解下
1、 Hibernate Hibernate 是当前非常流行的ORM框架对数据库结构提供了较为完整的封装都是为了简化Dao层的操作。 MybatisMybatis同样也是非常流行的ORM框架主要着力点在于POJO 与SQL之间的映射关系都是为了简化Dao层的操作。 2、Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory然后由SessionFactory 生 成Session最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuiderSessionFactorySession的生命周期都是 差不多的。Hibernate和MyBatis都支持JDBC和JTA事务处理。 3、Hibernate和Mybatis的二级缓存除了采用系统默认的缓存机制外都可以通过实现你自己的缓存或为其他第三方缓存方 案创建适配器来完全覆盖缓存行为一般在这里的话我们用encache和mybatis和spring集成比较多这个时候你可以你学习下encache也可以去了解小分布式缓存mencached 还有oschache都可以学习下。 MyBatis 参考资料官网http://www.mybatis.org/core/zh/index.html Hibernate参考资料 http://docs.jboss.org/hibernate/core/3.6/reference/zh-CN/html_single/ 不同点 1、hibernate是全自动而mybatis是半自动。 Hibernate完全实现了对JDBC的封装,可看成全自动洗衣机.调用一个save()方法就能实现插入操作,完全不需要写sql.当然,它也支持类似sql的hql语句.ibatis需要自己写sql,但是sql写在配置文件(.xml)文件里面,可看成半自动洗衣机.mybatis初级阶段可理解成就是ibatis. 2、hibernate不怎么需要写sql而mybatis需要把sql写在配置文件里面。 3、 hibernate数据库移植性和扩展性远大于mybatis维护性比较好。 Mybatis由于所有SQL都是依赖数据库书写的所以扩展性迁移性比较差成本很高。Hibernate与数据库具体的关联都在XML中所以HQL对具体是用什么数据库并不是很关心大大降低了对象与数据库oracle、mysql等的耦合性。 4、hibernate开发速度比mybatis相对快点 Hibernate的开发难度要大于Mybatis。主要由于Hibernate比较复杂、庞大学习周期较长。 而Mybatis则相对简单一些并且Mybatis主要依赖于sql的书写让开发者感觉更熟悉。 Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。 针对高级查询Mybatis需要手动编写SQL语句以及ResultMap。而Hibernate有良好的映射机制开发者无需关心SQL的生成与结果映射可以更专注于业务流程。 5、 hibernate拥有完整的日志系统mybatis则欠缺一些。 hibernate日志系统非常健全涉及广泛包括sql记录、关系异常、优化警告、缓存提示、脏数据警告等而mybatis则除了基本记录功能外功能薄弱很多。 6、mybatis相比hibernate需要关心很多细节 hibernate配置要比mybatis复杂的多学习成本也比mybatis高。但也正因为mybatis使用简单才导致它要比hibernate关心很多技术细节。mybatis由于不用考虑很多细节开发模式上与传统jdbc区别很小因此很容易上手并开发项目但忽略细节会导致项目前期bug较多因而开发出相对稳定的软件很慢而开发出软件却很快。hibernate则正好与之相反。但是如果使用hibernate很熟练的话实际上开发效率丝毫不差于甚至超越mybatis。 7、hibernate缓存机制比mybatis强大 Hibernate一级缓存是Session缓存利用好一级缓存就需要对Session的生命周期进行管理好。建议在一个Action操作中使用一个Session。一级缓存需要对Session进行严格管理。 Hibernate二级缓存是SessionFactory级的缓存。 SessionFactory的缓存分为内置缓存和外置缓存。内置缓存中存放的是SessionFactory对象的一些集合属性包含的数据(映射元素据及预定SQL语句等),对于应用程序来说,它是只读的。外置缓存中存放的是数据库数据的副本,其作用和一级缓存类似.二级缓存除了以内存作为存储介质外,还可以选用硬盘等外部存储设备。二级缓存称为进程级缓存或SessionFactory级缓存它可以被所有session共享它的生命周期伴随着SessionFactory的生命周期存在和消亡。 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。 默认情况下是没有开启缓存的,除了局部的 session 缓存,可以增强变现而且处理循环 依赖也是必须的。要开启二级缓存,你需要在你的 SQL 映射文件中添加一行: 字面上看就是这样。这个简单语句的效果如下: 映射语句文件中的所有 select 语句将会被缓存。 映射语句文件中的所有 insert,update 和 delete 语句会刷新缓存。 缓存会使用 Least Recently Used(LRU,最近最少使用的)算法来收回。 根据时间表(比如 no Flush Interval,没有刷新间隔), 缓存不会以任何时间顺序 来刷新。 缓存会存储列表集合或对象(无论查询方法返回什么)的 1024 个引用。 缓存会被视为是 read/write(可读/可写)的缓存,意味着对象检索不是共享的,而 且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改 8、sql直接优化上mybatis要比hibernate方便很多 由于mybatis的sql都是写在xml里因此优化sql比hibernate方便很多。而hibernate的sql很多都是自动生成的无法直接维护sql虽有hql但功能还是不及sql强大见到报表等变态需求时hql也歇菜也就是说hql是有局限的hibernate虽然也支持原生sql但开发模式上却与orm不同需要转换思维因此使用上不是非常方便。总之写sql的灵活度上hibernate不及mybatis。 9、mybait比hibernate更加灵活驾驭型更好 Mybatis优势 MyBatis可以进行更为细致的SQL优化可以减少查询字段。 MyBatis容易掌握而Hibernate门槛较高。 Hibernate优势 Hibernate的DAO层开发比MyBatis简单Mybatis需要维护SQL和结果映射。 Hibernate对对象的维护和缓存要比MyBatis好对增删改查的对象的维护要方便。 Hibernate数据库移植性很好MyBatis的数据库移植性不好不同的数据库需要写不同SQL。 Hibernate有更好的二级缓存机制可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。