第九章 关系映射 组件关联映射

来源:互联网 发布:中航工业工作服 淘宝 编辑:程序博客网 时间:2024/04/29 22:33

组件是针对同一张表中的字段进行映射,作用是将字段多的一张表分成多个实体类来表示

如:nameuser

user表中有first_namelast_name。在实体类中,自定义一个Name类来表示first_namelast_name;


Name实体类:

package cn.framelife.mvc.entity;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实体类:

package cn.framelife.mvc.entity;import java.io.Serializable;public class User implements Serializable {private Integer id;private Name name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Name getName() {return name;}public void setName(Name name) {this.name = name;}}


User.hbm.xml:

<hibernate-mapping>    <class name="cn.framelife.hibernate.entity.User" table="user" catalog="hibernate">        <id name="id" type="java.lang.Integer">            <column name="id" />            <generator class="native" />        </id>        <component name="name" class="cn.framelife.hibernate.entity.Name">        <property name="firstName" column="first_name"></property>        <property name="lastName" column="last_name"></property>        </component>    </class></hibernate-mapping>


增加操作:

tx = session.beginTransaction();Name name = new Name();name.setFirstName("111");name.setLastName("2222");User user = new User();user.setName(name);session.save(user);tx.commit();


原创粉丝点击