2012-03-15 163 views
0

我有一个对象与大约20个其他对象相关的MainObject。这20个其他对象 - RelatedObject1,RelatedObject2等与MainObject的关系定义如下。NHibernate实体映射

1实例MainObject - RelatedObject_1 1个实例的> N个实例MainObject - > RelatedObject_2的N个实例 1实例MainObject - > RelatedObject_3 的N个实例。 。 。 1个实例MainObject - > N个RelatedObject_20的实例。

现在所有的关系都是“有 - 有”关系,而不是“IS-A”关系。这不是一个亲子关系。

相关对象在系统中有其独立的事务功能流程。 现在我应该在我的MainObject.hbm.xml中为这20个相关对象创建Bags/Sets/Lists /。 用于从MainObject访问它们的数据。

如果我创建一个包/设置/列表 - 我想确保在保存或更新MainObject时数据不保存/保留在数据库中。在这种情况下使用哪些属性是有意义的。

回答

1

使用

  • bag无序可能复制
  • set无序没有复制
  • list时下令可能复制

,并设置cascade="none"防止级联的任何操作(保存,更新,...)

+0

但由于相关实体的交易流程是独立的,它是一个很好的做法,包括皮包一样?这不会增加对象图吗? – 2012-03-27 10:49:19

+0

如果您经常需要将主对象与相关对象一起使用,则更容易建立关系,因为您可以使用获取路径来快速加载带有相关数据的主对象。此外,Cascade =“none”可确保在CUD主对象时未触及相关对象。 – Firo 2012-03-27 16:51:41

+0

谢谢。这回答了我的问题。 – 2012-03-28 04:11:56