Hibernate讀書筆記—–Hibernate的關聯映射之組件屬性關聯關系 – JAVA編程語言程序開發技術文章

先看User持久化類:
[java] 
public class Users { 
    private int id; 
    private Date birthday; 
    private Name name; 
 
    public int getId() { 
        return id; 
    } 
 
    public void setId(int id) { 
        this.id = id; 
    } 
 
    public Date getBirthday() { 
        return birthday; 
    } 
 
    public void setBirthday(Date birhday) { 
        this.birthday = birhday; 
    } 
 
    public Name getName() { 
        return name; 
    } 
 
    public void setName(Name name) { 
        this.name = name; 
    } 
 

          從User持久化類中可以看到name不再是一個簡單的String,而是一個類。在這裡name就是一個組件屬性,在name類中可以包含基本數據類型、字符型、日期型甚至是組件和關聯實體。從User持久化類中我們看不出name是關聯實體還是普通的組件屬性。但是如果我們將Name映射成持久化實體,那麼Name就是關聯實體,如果不映射成持久化類,那麼就是組件屬性。這裡我們不將Name映射成持久化類。
          Name類如下:
[java] 
public class Name { 
    private String firstName; 
    private String lastName; 
 
    public String getFirstName() { 
        return firstName; 
    } 
 
    public void setFirstName(String firstName) { 
        this.firstName = firstName; 
    } 
 
    public String getLastName() { 
        return lastName; 
    } 
 
    public void setLastName(String lastName) { 
        this.lastName = lastName; 
    } 
 

        為瞭映射User類中的Name組件,映射文件中使用<component…/>元素來映射該主鍵元素。映射文件如下:
          User.hbm.xml
[html] 
<hibernate-mapping package="com.hibernate.domain"> 
    <class name="Users"> 
        <id name="id"> 
            <generator class="native" /> 
        </id> 
 
        <property name="birthday" /> 
         
        <!– 映射組件元素 –> 
        <component name="name"> 
            <!– 映射組件的name屬性指向包含實體 –> 
            <property name="firstName" column="first_name"/> 
            <property name="lastName" column="last_name"/> 
        </component> 
    </class> 
</hibernate-mapping> 

          操作類如下:
[java] 
public class UserManager { 
 
    public static void main(String[] args) { 
        Session session = HibernateUtil.getSession(); 
        Transaction tx = session.beginTransaction(); 
         
        Users users = new Users(); 
        users.setBirthday(new Date()); 
        Name name = new Name(); 
         
        name.setFirstName("first name"); 
        name.setLastName("last name"); 
        users.setName(name); 
         
        session.save(users); 
        tx.commit(); 
        session.close(); 
    } 
 

 作者:chenssy

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *