zoukankan      html  css  js  c++  java
  • hibernate access访问持久化类属性的策略

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

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

    Java代码  收藏代码
    1. public class Customer implements Serializable {  
    2.   
    3.     /** 
    4.      *  
    5.      */  
    6.     private static final long serialVersionUID = 1L;  
    7.   
    8.     private String firstname;  
    9.     private String lastname;  
    10.   
    11.     public String getName() {  
    12.         return firstname + " " + lastname;  
    13.     }  
    14.   
    15.     public void setName(String name) {  
    16.         StringTokenizer t = new StringTokenizer(name);  
    17.         firstname = t.nextToken();  
    18.         lastname = t.nextToken();  
    19.     }  
    20.   
    21. }  


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

    Java代码  收藏代码
    1. <property name="name" column="NAME" />  


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

  • 相关阅读:
    DataGrid 样式
    MVC调用部分视图PartialView
    JavaScript/jQuery判断变量是否是undefined
    form表单只单个input框按回车键页面会自动刷新
    无法使用前导 .. 在顶级目录上退出
    Response.Redirect:正在中止线程
    图片压缩是出现白边如何去除
    C#.Net调试时调无法“编辑并继续”
    TimeSpan时间间隔
    拒绝了对对象 'sp_OACreate' (数据库 'mssqlsystemresource',架构 'sys')的 EXECUTE权限
  • 原文地址:https://www.cnblogs.com/csy8fs/p/4058750.html
Copyright © 2011-2022 走看看