<property>元素的access属性
在对象-关系映射文件中,<property>元素的access属性用于指定Hibernate访问持久化类的属性的方式。它有如下两个值:
-
Property:默认值,表明Hibernate通过set和get方法访问实体类的属性,适用于没有属性但有get和set方法的实体类映射;
-
Field:表明Hibernate通过Java反射机制直接访问类的属性。适用于没有get和set方法的实体类映射;
例如某实体类中有个属性sex的setsex方法会被java前段和Hibernate同时调用。Java前段调用时须验证录入值是否合法,这是需要setSex方法的验证。Hibernate从数据库获取的数据总是合法的,无须setSex的验证方法,这是就可以将<property>元素的access属性设为field。
public void setSex(char sex){
if (sex!=’f’&& sex!=’M’){
throw new IllegalArgumentException(“InvalidSex”);
}
this.sex =sex;
}
<property name=”sex” access=”feild”>
<columnname=”Sex” bot-null=”true”>
</property>
<property>元素的formula属性
并非所有的持久类属性都直接和关系表中的字段对应,有的持久类属性值在运行时通过计算才能出来,这种叫派生属性。假如实体类User中的loginIndex属性在关系表中没有对应的字段。这是可以利用<property>元素的formula属性设置SQL来计算loginIndex的值.
<property name=” loginIndex” formula=”select … from……”>
</property>
<property>元素的update、insert属性
当<property>元素的update属性设为FALSE,表明该字段永远不能被更新;