以前一直使用iBatis,后来看到Hibernate这么火,就研究了一下,使用过一个简单项目,感觉到非常不爽,也许是我没有使用好。来到这里一吐为快,我知道这里的hibernate高手很多,请这些高手手下留情,不要B4我。
总结:由于Hibernate的设计思想,他对简单的增、删、改、查询支持不错。对于复杂的SQL支持就欠缺了。适用于留言簿等简单的系统。
Hibernate优点:
1、配置简单,不用写Sql。
2、Cache机制做得好,能够精确Cache、Flush对象。
3、简单的增删改的Java代码简单。
4、如果不用本地SQl,就可以跨数据库。(不过,谁一天没事做就换数据库啊?)
5、简单的开发效率高。
Hibernate缺点:
1、1对1关联在load的时候,居然用left join 实现,太可怕了(右边对象的单独cache失去作用了)。
2、组合查询同jdbc一样,需要写if (xx) {CriteriaSpecification.add(Criterion)}类似语句,Java会显得完全不可读。
3、get和load似乎只适用主键,如果表上有其它条件能得到唯一对象,就必须使用list.get(0)了,郁闷。
4、由于底层sql不可控,想要优化sql困难太大了(使用本地SQL?),数据库一般都支持采用哪个索引检索,如mysql的 force index(indexname)。在这种情况下,hibernate用不上(又要写本地SQL?)。
5、调用Oracle procedure,如果procedure返回了cursor,接收cursor太复杂了。如果是cursor套cursor,那更加不可想象的复杂。
6、DB级的SQL特性很难用上,如函数,特别是insert,有很多缺省值是sysdate()一类语句,hibernate要用上,就必须写本地insertsql,这样又复杂了。
7、如果查询采用本地SQL,则你会发现在Java代码中有n多if else,StringBuffer.append,外加一个substring。
8、据我所知,99%的DBA 100%反对使用hibernate。
9、大型项目不适用。
分享到:
相关推荐
Hibernate框架ORM的实现原理.doc
将Hibernate和iBatis两Orm框架整合,取长补短 博文链接:https://youlong05.iteye.com/blog/24872
Ujorm 它是一个高性能的开源Java ORM框架,尤其针对持久层的快速开发,在搜索查询的测试中,Ujorm的运行速度比其他竞争产品要快很多。 Ujorm在很多方面展开创新,在和Hibernate的比较中,Ujorm也拥有一些优势。...
sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring),具有jpa式的对象CRUD的同时具有比myBatis(plus)更直观简洁性能强大的查询功能。 支持以下数据库: oracle 11g+ db2 9.5+,建议从10.5 开始...
不用写sql啦,不用创建表啦,一个比mybatis更轻量级,比hibernate好用的orm!
Uncode-DAL是 Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate等ORM框架开发,同时支持基于多数据源的读写分离、主备切换、故障转移,自动恢复、负载均衡、缓存等。可以大大提高开发速度
虽然Java领域有无数的ORM框架,如Hibernate,iBatis,TopLink,JDO,JPA……但是这些ORM框架基本上大同小异。很多初学者对JDBC的复杂性望而却步,就简单认为使用ORM就会省时省力,结果恰恰相反,任何好的框架都是给...
Hibernate源码(hibernate-orm-main.zip)Source Code: Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。 它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring),具有jpa式的对象CRUD的同时具有比myBatis(plus)更直观简洁性能强大的查询功能,越复杂优势越凸显。Java真正智慧的ORM框架,除具有JPA功能...
关于orm框架的一个自定义框架,方便人们理解hibernate框架的原理
java orm 框架 hibernate的最新api说明文档.非中文,但介绍很详细.chm版. java orm 框架 hibernate的最新api说明文档.非中文,但介绍很详细.chm版.
该系统将采用Java语言作为开发语言,并且使用Spring MVC框架、Hibernate ORM框架和MySQL数据库等技术来构建。此外,还将采用HTML、CSS和JavaScript等前端技术来设计用户界面。 系统的主要功能包括用户注册、登录、...
hibernate5+jar包,基本上是比较新的了。ORM框架的首选/
SQLAlchemy 是 Python 界著名 ORM 框架,地位与 Java 界 Hibernate 类似。而 Thing 不是对 SQLAlchemy 的包装,只使用了其核心部分(数据库适配器等),ORM 部分完全自行实现。这一做法使 Thing 非常小巧,核心代码...
JPA简介 JPA 即Java Persistence API。是一款持久层框架,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。... ORM框架还有:MyBatis、Hibernate
它介绍了JAVAspring的ORM框架的概念、原理和作用,以及如何使用JAVAspring的ORM框架来实现数据持久化,包括JDBC、Hibernate、MyBatis等常用的ORM框架的集成和使用,以及一些配置文件和注解的用法。