10. Hibernate_详解 Hibernate 映射文件(2)

精确映射:

<!-- 映射大数据,若希望精确映射sql类型,则使用sql-type来指定字段类型:比如想要mediumtext,但是映射成为 了text -->
        <property name="image">
            <column name="IMAGE" sql-type="mediumblob"></column>
        </property>

映射组成关系
建立域模型和关系数据模型有着不同的出发点:
域模型: 由程序代码组成, 通过细化持久化类的的粒度可提高代码的可重用性, 简化编程

在没有数据冗余的情况下, 应该尽可能减少表的数目, 简化表之间的参照关系, 以便提高数据的访问速度

(也就是说,在java中是多个类,在数据表中是一个表,比如员工有工资,而工资是一个但单独的类.工资中有员工,员工中有工资)

Hibernate 把持久化类的属性分为两种:
值(value)类型: 没有 OID, 不能被单独持久化, 生命周期依赖于所属的持久化类的对象的生命周期
实体(entity)类型: 有 OID, 可以被单独持久化, 有独立的生命周期
显然无法直接用 property 映射 pay 属性
Hibernate 使用 元素来映射组成关系, 该元素表名 pay 属性是 Worker 类一个组成部分, 在 Hibernate 中称之为组件

         <!-- 映射组成关系 -->
         <component name="pay" class="Pay" >
            <parent name="worker"/>
            <!-- 指定组成关系的组件的属性 -->
            <property name="mouthSalary" column="mouth_salary"></property>
            <property name="yearSalary" column="year_salary"></property>
            <property name="volidate" column="volidate"></property>
         </component>
  • Worker
package com.hgh.hibernate.helloworld;

public class Worker {

    private Integer id;
    private String name;
    private Pay pay;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Worker() {
        super();
        // TODO Auto-generated constructor stub
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Pay getPay() {
        return pay;
    }
    public void setPay(Pay pay) {
        this.pay = pay;
    }

}
  • Pay
package com.hgh.hibernate.helloworld;

public class Pay {
    private int mouthSalary;
    private int yearSalary;
    private int volidate;

    private Worker worker;



    public Worker getWorker() {
        return worker;
    }
    public void setWorker(Worker worker) {
        this.worker = worker;
    }

    public int getMouthSalary() {
        return mouthSalary;
    }
    public void setMouthSalary(int mouthSalary) {
        this.mouthSalary = mouthSalary;
    }
    public int getYearSalary() {
        return yearSalary;
    }
    public void setYearSalary(int yearSalary) {
        this.yearSalary = yearSalary;
    }
    public int getVolidate() {
        return volidate;
    }
    public void setVolidate(int volidate) {
        this.volidate = volidate;
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值