Hibernate组件属性

本文介绍了如何使用Hibernate将JavaBean中的复合属性(如地址信息)映射到数据库表中的多个字段,通过示例展示了创建JavaBean类、配置映射文件及实现数据存取的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate组件属性

Hibernate的组件属性其实对应在数据库中就是将某个组件(javabean)中的属性映射为字段。

创建组件(javabean)


public class Address {

    private String postcode;
    private String phone;
    private String address;

    public Address() {
    }

    public Address(String postcode, String phone, String address) {
        this.postcode = postcode;
        this.phone = phone;
        this.address = address;
    }

    public String getPostcode() {
        return postcode;
    }

    public void setPostcode(String postcode) {
        this.postcode = postcode;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

}

Javabean

将原有的Students类中的String address换成Address address类型,并修改其set和get方法。

import java.sql.Blob;
import java.util.Date;



/**学生类
 * @author qiqiangvae
 *
 */
public class Students {
    private int id;
    private String name;
    private String gender;
    private Date date;
    private Address address;
    private Blob picture;

    public Students() {
    }


    public Students(int id, String name, String gender, Date date, Address address) {
        super();
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.date = date;
        this.address = address;
    }


    @Override
    public String toString() {
        return "Students [id=" + id + ", name=" + name + ", gender=" + gender + ", date=" + date + ", address="
                + address + ", picture=" + picture + "]";
    }


    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }

    public Blob getPitcure() {
        return picture;
    }

    public void setPicture(Blob picture) {
        this.picture = picture;
    }

}

修改Students.hbm.xml

修改Students.hbm.xml,将原有的address删掉,添加新的组件属性

<component name="address" class="Address">
        <property name="postcode" column="POSTCODE"></property>
        <property name="phone" column="PHONE"></property>
        <property name="address" column="ADDRESS"></property>
</component>

写入组件属性

public void testSaveStudents() {
        Students students=new Students();
        students.setName("李心剑");
        students.setDate(new Date());
        Address address=new Address("246514", "13055555555", "纯阳宫");
        students.setAddress(address);
        session.save(students);
}

写入组件属性后的表结构
写入的数据
可以看到,Hibernate是将组件(Javabean)中的属性追加到数据表后面作为新的字段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值