快捷搜索:

Hibernate的十大罪状

Hibernate确凿功能刁悍,但在易用性、机能上存在缺陷。假如团队中没有一个精晓Hibernate的高手,不得当应用Hibernate.

1. 繁杂的实体状态3种实体状态的设计是各种繁杂性问题的根源。在持久化状态下不必要save就自动同步到数据库既无需要又轻易造成烦恼。

2. Lazy Load 与 Eager Load Lazy Load的观点听起来不错,用起来就不那么妙了,也直接导致孕育发生了Open Session In View这种退让规划。此外,在domain类中定义的FetchType只针对get/load/loadAll有效,对Query是无效的,必要再次定义。

3. Open Session In View Lazy Load激发的一个有较多副感化的办理规划。

4. 级联级联是一个很好很OO的观点,但每每增添了繁杂度。

5. 批量更新与缓存不同等Hibernate引入了一级缓存和二级缓存,供给了机能的同时带来了缓存同等性的问题。批量更新或者其他系统对数据库的更新轻易造成缓存不同等。

6. 设置设置设备摆设摆设繁琐Hibernate最初只能应用xml进行设置设置设备摆设摆设,后来终于引入了Annotation和CoC(约定优于设置设置设备摆设摆设)来简化设置设置设备摆设摆设,但这种厘革并不彻底。Hibernate默认把userName映射userName,但实际开拓中,把userName映射为user_name的环境更多些。

7. HQL HQL是一个类SQL工具查询说话,但恰是由于HQL与SQL的相似性,每每轻易造成肴杂,同时HQL难以调试,本色创建了一种说话,增添进修资源。

8. 太多的查询规划HQL、QBC、SQL,就不能统一点,简洁点?

9. N+1次查询

10. 机能问题

总之,Hibernate容身于作一个完备的自动化的能够适应各类情况的ORM,是以带来了100%的繁杂性。但我们实际必要的只是一个简单的能够以20%光阴办理80%问题的框架,具有工具-关系映射,能自动天生SQL,能够让新手尽快事情就足够了,大概ActiveRecord是一个选择。

您可能还会对下面的文章感兴趣: