美文网首页
Hibernate学习7(映射组成关系)

Hibernate学习7(映射组成关系)

作者: 又是那一片天 | 来源:发表于2017-08-08 13:07 被阅读0次
一张表对应 一组对象

如员工信息 和工资休假 业务是分开 但可以存放在一张表里

  • 子对象(员工工资休假对象)不具有OID属性
package chen;

public class Pay {
    private int pay;//工资
    private int annualLeave;//假期
    
    public int getPay() {
        return pay;
    }
    public void setPay(int pay) {
        this.pay = pay;
    }
    public int getAnnualLeave() {
        return annualLeave;
    }
    public void setAnnualLeave(int annualLeave) {
        this.annualLeave = annualLeave;
    }
}

  • 主对象(员工基本信息)具有OID属性
package chen;

public class Staff {
    private Integer id;
    private String name;
    private Pay pay;//工资

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    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;
    }
}
配置
  • component标签配置 name属性主对象对应属性名 class属性是子对象的全类名
  • component标签 使用property子标签指定属性与列名对应关系
<hibernate-mapping package="chen">
    <class name="Staff" table="STAFF">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <!-- 映射组成关系 -->
        <component name="pay" class="Pay">
            <!-- 指定组成关系属性 -->
            <property name="annualLeave" column="annualLeave"></property>
            <property name="pay" column="pay"></property>
        </component>
    </class>
</hibernate-mapping>
代码使用:
    /**
     * 映射组成关系
     * 一个对象由多个对象组成的映射
     * 
     */
    public static void testRelation() {
        StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();// 配置文件configure()
        SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();

        Staff staff = new Staff();
        staff.setName("张三");

        Pay pay = new Pay();
        pay.setAnnualLeave(5);
        pay.setPay(100000);
        staff.setPay(pay);
        session.save(staff);

        transaction.commit();
        session.close();
        sessionFactory.close();
    }
数据库
一张表对应 一组对象

如员工信息 和工资休假 业务是分开 但可以存放在一张表里

  • 子对象(员工工资休假对象)不具有OID属性
package chen;

public class Pay {
    private int pay;//工资
    private int annualLeave;//假期
    
    public int getPay() {
        return pay;
    }
    public void setPay(int pay) {
        this.pay = pay;
    }
    public int getAnnualLeave() {
        return annualLeave;
    }
    public void setAnnualLeave(int annualLeave) {
        this.annualLeave = annualLeave;
    }
}

  • 主对象(员工基本信息)具有OID属性
package chen;

public class Staff {
    private Integer id;
    private String name;
    private Pay pay;//工资

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    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;
    }
}
配置
  • component标签配置 name属性主对象对应属性名 class属性是子对象的全类名
  • component标签 使用property子标签指定属性与列名对应关系
<hibernate-mapping package="chen">
    <class name="Staff" table="STAFF">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <!-- 映射组成关系 -->
        <component name="pay" class="Pay">
            <!-- 指定组成关系属性 -->
            <property name="annualLeave" column="annualLeave"></property>
            <property name="pay" column="pay"></property>
        </component>
    </class>
</hibernate-mapping>
代码使用:
    /**
     * 映射组成关系
     * 一个对象由多个对象组成的映射
     * 
     */
    public static void testRelation() {
        StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();// 配置文件configure()
        SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();

        Staff staff = new Staff();
        staff.setName("张三");

        Pay pay = new Pay();
        pay.setAnnualLeave(5);
        pay.setPay(100000);
        staff.setPay(pay);
        session.save(staff);

        transaction.commit();
        session.close();
        sessionFactory.close();
    }
image.png
  • 只是业务上分开 表还是一张
  • 只是业务上分开 表还是一张

相关文章

  • Hibernate学习7(映射组成关系)

    一张表对应 一组对象 如员工信息 和工资休假 业务是分开 但可以存放在一张表里 子对象(员工工资休假对象)不具有O...

  • Hibernate映射关系之一对一(一)

    在学习Hibernate映射关系时,我们先来做一些准备工作。 1、建一个web项目,这里只是Hibernate映射...

  • Heibernate学习

    Heibernate学习 Hibernate 映射类型 映射类型 当你准备一个 Hibernate 映射文件时,我...

  • Hibernate详解

    补充学习hibernate 一、概念 Hibernate是一个开源的、轻量级的ORM(对象关系映射)工具。ORM工...

  • 4.hibernate映射(多对一)

    映射关系 映射是对象到表,映射关系是多个对象的关系映射到多张表的关系! cascade级联 hibernate的级...

  • Hibernate介绍

    Hibernate的介绍: (开放源代码的对象关系映射框架) Hibernate是一个开放源代码的对象关系映射框架...

  • Hibernate入门(一)之基本配置

    Hibernate是什么? Hibernate是一个开源的持久层ORM(对象关系映射)框架. Hibernate能...

  • Hibernate 映射关系

    0. 关联关系映射 关联关系映射,是映射关系中比较复杂的一种映射关系,总的说来有一对一、一对多和多对多几种关系。细...

  • hibernate映射关系

    多对一单项关联 例:学生和班级的关系,学生为多方,班级为一方实现 最终实现效果就是相当于在Student表中再添加...

  • Hibernate映射关系

    分类: 关系:OneToOne,OneToMany,ManyToOne,ManyToMany(Join Table...

网友评论

      本文标题:Hibernate学习7(映射组成关系)

      本文链接:https://www.haomeiwen.com/subject/gsltrxtx.html