一、单向关联
单向的一对多关联即包括只建立从一方到多方的关联,又包括只建立从多方到一方的关联。
<many-to-one>元素的not-null属性用来控制外键是否允许为空,默认not-null属性值为false,即允许为空。
可以通过设置<many-to-one>元素的cascade属性实现级联保存与更新,cascade属性的默认值为none,即不采用任何级联操作。
二、双向关联
所谓双向关联,就是即建立从一方到多方的关联,又建立从多方到一方的关联
通过将<set>元素的inverse属性设置为true,可以减少hibernate执行SQL语句的条数,提高软件的运行效率。
三、自关联
四、控制生成insert和update语句的映射属性
映射属性 | 作用 |
<property>元素的insert属性 | 如果为false,在insert语句中不包含该字段,表明该字段永远不能被插入。默认值为true |
<property>元素的update属性 | 如果为false,update语句中不包含该字段,表明该字段永远不能被更新,默认值为true |
<class>元素的mutable属性 | 如果为false,等价于所有的<property>元素的update属性为false,表示整个实例不能被更新,默认值为true |
<property>元素的dynamic-insert属性 | 如果为true,表示当保存一个对象时,会动态生成insert语句,只有这个字段取值不能为null,才会把它包含到insert语句中。默认值为false |
<property>元素的dynamic-update属性 | 如果为true,表示当更新一个对象时,会动态生成update语句,只有该字段取值不为null,才会把它包含到update语句中。默认值为false |
<class>元素的dynamic-insert属性 | 如果为true,等价于所有的<property>元素的dynamic-insert属性为true,表示当保存一个对象时,会动态生成insert语句,insert语句中仅包含所有取值不为null的字段。默认值为false |
<class>元素的dynamic-update属性 | 如果为true,等价于所有的<property>元素的dynamic-update属性为true,表示当保存一个对象时,会动态生成update语句,update语句中仅包含所有取值不为null的字段。默认值为false |
五、命名策略