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中是不能访问到这两个属性的。 

  • 相关阅读:
    HDU 1495 非常可乐
    ja
    Codeforces Good Bye 2016 E. New Year and Old Subsequence
    The 2019 Asia Nanchang First Round Online Programming Contest
    Educational Codeforces Round 72 (Rated for Div. 2)
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises)
    AtCoder Regular Contest 102
    AtCoder Regular Contest 103
    POJ1741 Tree(点分治)
    洛谷P2634 [国家集训队]聪聪可可(点分治)
  • 原文地址:https://www.cnblogs.com/csy8fs/p/4058750.html
Copyright © 2011-2022 走看看