hibernate访问持久化类属性的策略

<property>元素的access属性用法:
access有两个可选的值:
1,property:这是默认值,表明hibernate通过set和get方法来访问类的属性。这是优先的推荐方式。你必须为这个属性设置get和set方法,hibernate才能访问到。否则会报错的。
2,field:表明hibernate通过java的反射机制直接访问类的属性。你可以不给这个属性设置get和set属性。

这个属性在我们拼凑用户名的时候很有效。如下示例:

public class Customer implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;

private String firstname;
private String lastname;

public String getName() {
return firstname + " " + lastname;
}

public void setName(String name) {
StringTokenizer t = new StringTokenizer(name);
firstname = t.nextToken();
lastname = t.nextToken();
}

}

在该类的持久化映射文件中无需配置firstname和lastname属性,而需要映射name属性,因为我们最终要得到的是完整的name。
<property name="name" column="NAME" />

尽管在Customer类中没有定义name属性,由于hibernate不会直接访问name属性,而是通过setName和getName来访问的。不管在Customer类中是否存在name属性,只要在映射文件中映射了name属性,HQL就能访问到它,相反,firstname和lastname属性在映射文件中没有配置映射,所以HQL中是不能访问到这两个属性的。

相反的情况下,我们可以设置access的值为“field”。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值