Hibernate中会经常用到set等集合来表示1-N的关系。比如,我有Customer和Order两个对象。其中,在Customer中有一个Order的set集合,表示在一个顾客可以拥有多个Order,而在Order对象中存在了一个Customer的对象,表示这个Order是哪个顾客下的单。这个算是比较典型的双向1-N关联。

这给我们带来了很大的好处,当我得到了Customer对象的时候,我们可以很方便的将与其相关联的Order集合查询出来,这也非常符合我们的实际业务,毕竟我们不可能给这个Cutomer对象别人的Order吧,这既不安全,而且对Customer的普通顾客来说,并无卵用。所以我们不得不说Hibernate的ORM做的很好,但凡事都有但是(要是没有但是,也就没有写这篇文章的必要了)。

我们再对数据库进行访问的时候必须要考虑性能问题(通俗点讲,就是用少发SQL语句),当我们设定了1-N这种关系后,查询过程中就有可能出现N+1问题。
关于N+1问题,并不是本文的重点。但关于N+1问题,我们需要知道的是,这个问题会导致SQL语句的增加,也就是要与数据库进行更多的交互,这无疑会给项目以及后台数据库带来影响。

阅读原文 »

3 收藏


直接登录

推荐关注