这些是我想用Hibernate映射的表:
user (PK UserId)
article (PK ArticleId, FK CreatorUserId)
category (PK CategoryId, FK ParentCategoryId)
我一直在关注Hibernate的documentation,但我真的无法选择哪种类型的映射最适合我的表。
任何帮助将不胜感激! :)
答案 0 :(得分:1)
在这两种情况下,关系并非需要是双向的,但大部分时间都是双向的。
答案 1 :(得分:1)
对于用户 - 文章关系,您可以使用Set或List映射为bag;列表往往在java方面处理起来更方便,特别是如果文章具有您可能想要对该集合进行排序的属性(例如创建日期)。样本映射是:
<!-- within User mapping -->
<set name="articles" table="article" inverse="true">
<key column="CreatorUserId"/>
<one-to-many class="Article"/>
</set>
<!-- within Article mapping -->
<many-to-one name="creatorUser" class="User" column="CreatorUserId" not-null="true"/>
上面将关联映射为双向,而Article负责维护关系(这可以避免在收集更改期间进行不必要的更新)。详细信息为here。如果您更愿意使用List代替Set,请将<set>
替换为<bag>
;然后,您可以添加“order-by”属性,以使列表在数据库中排序。
对于类别,您理论上也可以这样做,但是如果您的类别层次结构很深,而您需要经常检索特定级别/子树,请考虑使用nested set model。