我正在阅读Hibernate文档,并遇到了反向属性的概念。由于我是Hibernate的新手,所以我很难正确理解这个概念。
<class name="Category">
<id name="id" column="CATEGORY_ID"/>
...
<bag name="items" table="CATEGORY_ITEM">
<key column="CATEGORY_ID"/>
<many-to-many class="Item" column="ITEM_ID"/>
</bag>
</class>
<class name="Item">
<id name="id" column="ITEM_ID"/>
...
<!-- inverse end -->
<bag name="categories" table="CATEGORY_ITEM" inverse="true">
<key column="ITEM_ID"/>
<many-to-many class="Category" column="CATEGORY_ID"/>
</bag>
</class>
从上面的代码中可以看出,
inverse="true"
应用于 categories ,因此我理解 categories 是反向端。但是我发现我的理解有一些矛盾:
引用块中说:
只对关联的反向端进行的更改不会被持久化。
category.getItems().add(item); // The category now "knows" about the relationship
item.getCategories().add(category); // The item now "knows" about the relationship
session.persist(item); // The relationship won't be saved!
session.persist(category); // The relationship will be saved
如果categories在反向端,那么关系是如何保存的?
非反向端用于将内存表示保存到数据库中。
通过查看示例并阅读上述语句,我知道categories在非反向端。
请帮助我了解如何解释inverse="true"属性。在搜索网络并查看SO答案后,我知道了这个属性的有用性,但我仍然感到困惑。