hibernate组件映射

组件映射,一个类是另外一个类的一部分,比如学生证类是学生类的一部分,在表里的关系,学生证信息的学生表信息的一部分,此时就需要用组件映射,

本例中,wife是husband的一部分。

Wife类:

package com.oracle.hibernate;

/**
 * wife是husband的一部分
 * wife示husband属性表的一部分,
 *所以wife没有id
 */

public class Wife {

    /**
     * 注意wife类里的属性名不能和husband类里的属性名冲突
     * 如果属性名一样,可以在getName()上加@Column指定映射的表里的字段名
     */

    private String wifeName;
    private int wifeage;

    public String getWifeName() {
        return wifeName;
    }
    public void setWifeName(String wifeName) {
        this.wifeName = wifeName;
    }
    public int getWifeage() {
        return wifeage;
    }
    public void setWifeage(int wifeage) {
        this.wifeage = wifeage;
    }

}

Husband类:

package com.oracle.hibernate;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.OneToOne;

@Entity
public class Husband {

    private int id;
    private String name;
    private Wife  wife;

    @Id    //主键id
    @GeneratedValue    //自动生成
    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;
    }
    /**
     * Wife是husband的一部分,wife是husband表的一部分
     * 比如学生证信息,完全可以写在学生表里,作为属性的一部分,
     * 能写在一张表里就不必单独再弄一张表
     *
     * 用@Embedded,嵌入的
     */
    @Embedded
    public Wife getWife() {
        return wife;
    }
    public void setWife(Wife wife) {
        this.wife = wife;
    }
}

生成的表是一张表husband:

hibernate建表语句:

create table Husband (
id integer not null auto_increment,
name varchar(255),
wifeName varchar(255),
wifeage integer not null,
primary key (id)
)

时间: 2024-12-28 02:31:47

hibernate组件映射的相关文章

(13)Hibernate组件映射

不相信自己的人 连努力的价值都没有. 类组合关系的映射,也叫做组件映射! 注意:组件类和被包含的组件类,共同映射到一张表! 需求: 汽车与车轮 生成的表:主键.汽车名称.轮胎大小.轮胎数量 Wheel.java package com.rk.hibernate.m_component; public class Wheel { private int count; private int size; public int getCount() { return count; } public v

框架 day33 Hibernate,组件映射,继承映射,抓取(检索)策略-优化,检索方式总结

组件(组成)映射 例1: public class Person { private Integer pid; //OID 值 private String name; //第一种方案 private String homeAddr; private String homeTel; private String companyAddr; private String companyTel; ↑一般项目都都采用此方案() *通过面向对象角度,使用设计模式(组件|组合),将数据都抽取到一个对象中.将

Hibernate之组件映射

1:为什么要使用组件映射 答:建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系.以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立员工信息表和地址信息表之间的外键参照关系,当每次查询员工信息时,都需建立者两个表的连接.建立表的连接是很耗时的操作,为了提高数据库运行性能,可以把这两张表的信息整合在一张员工信息表EMPINFO中. 2:什么是组件映射:组件是一个被包含的对象,它和它的所有者同存于一张表中,

hibernate中的组件映射

组件映射 1 项目:hibernate_1100_component 2 对象关系:一个对象是另外一个对象的一部分 3 数据库表:一张表 4 annotation: @ Embeddable @Embbeded 对象模型 Husband(id,name,wife) Wife(name,age) Annotation: 在Husband的wife属性上建立注解 @Embedded 表明该对象是从别的位置嵌入过来的,是不需要单独映射的表. 这种方式生成的表为husband(id,name,wifen

Hibernate中一对一关联映射/组件映射

Hibernate映射:一对一关联 1.按照外键映射 2.按照主键映射 组件映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映射方式分别完成以下持久化操作 (1)保存员工档案的同时分配给员工一个账号 (2)加载员工档案的同时加载账号信息 一:按照外键映射

《Hibernate学习笔记八》:组件映射

<Hibernate学习笔记八>:组件映射 前面介绍了一对一的单向.双向外键关联,例如,学生证和学生是一个一对一的关系.这篇博文主要是介绍下组件映射,即一个是另一个的一部分,例如,学生证的信息也可以作为学生信息的一部分,即在数据库中只存在学生一个表,而不是有学生和学生证两个表,并且这两个表中有一个一对一的关联关系. 如下: 有人或许会说,那我们就将学生和学生证的信息写在一个类中,则就不需要组件映射了,确实可以这样,但是,根据类的设计原则,我们一般都会将其设计为两个类,然后将学生证的信息作为一个

.Hibernate一对一映射与组件映射

1.按照外键映射(Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射) 实现需要: 创建实体类Users1和Resume1 public class Users1 { private Integer userid; private String username; private String userpass; private Resume1 resume1; } *********** public class Resume1 { private Integer

攻城狮在路上(壹) Hibernate(九)--- Hibernate的映射类型

Hibernate采用映射类型作为Java类型和SQL类型的桥梁,对应type属性.分为两种:内置映射类型和客户化映射类型.一.内置映射类型: 1.Java基本类型的Hibernate映射类型: Java基础类型的Hibernate映射类型 Hibernate映射类型 Java类型 标准SQL类型 大小和取值范围 integer或者int int或者java.lang.Integer INTEGER   long long BIGINT   short short SMALLINT   byte

hibernate关联映射

本文可作为北京尚学堂马士兵hibernate课程的学习笔记. hibernate的映射,主要分为一对一,一对多,多对一,多对多,同时还要单向与双向的区别. OK,不要纠结于名字,我们开始看例子. 一对一单向 老公是一个实体,老婆也是一个实体. 一个老公只有一个老婆,同时一个老婆也只有一个老公. 上面的关系就叫做一对一. 什么叫单向呢. 看代码: package com.bjsxt.hibernate; @Entity public class Husband { private int id;