组件映射——及实例

 今天上课我们主要学习的是组建映射,

组件映射

关联的属性是个复杂类型的持久化类型,但不是实体即:数据库中没有表与该属性对应,但该类的属性要持久保存的。

<component name=”name” class=”com.test.hibernate.domain.Name”>

       <property name=”initial”>

       <property name=”first”>

       <property name=”last”>

</component>

当组建的属性不能和表中的字段简单对应的时候可以选择实现:

org.hibernate.usertype.UserType或org.hibernate.usertype.CompositeUserType

 

组建映射实例源代码及其解析:

(1)       在domain包下新建Name类:

封装有两个属性firstName, lastName。

并生成其setter和getter方法。

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;

    }

}

 

(2)       在User类中封装一个Name对象的 name属性,并生成其setter和getter方法

import java.util.Date;

public class User {

    private int id;

    private Name name;

    private Date birthday;

    public int getId() {

       return id;

    }

    public void setId(int id) {

       this.id = id;

    }

    

    public Name getName() {

       return name;

    }

    public void setName(Name name) {

       this.name = name;

    }

    public Date getBirthday() {

       return birthday;

    }

    public void setBirthday(Date bithday) {

       this.birthday = bithday;

    }

}

(3)       修改映射文件User.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

 

<hibernate-mapping

    package="com.hbsi.domain">

 

    <class name="User" table="user">

       <id name="id" column="id">

           <generator class="native"/>

       </id>

       <component name="name">

       <property name="firstName" column="first_name"/>

       <property name="lastName" column="last_name"/>

       </component>

       <property name="birthday" column="birthday"/>

    </class>

</hibernate-mapping>

(4)       编写测试类:

public static void main(String[] args){

       User user=new User();

       Name name=new Name();

       name.setFirstName("Ding");

       name.setLastName("hongwei");

       user.setName(name);

       user.setBirthday(new Date());

       addUser(user);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值