Hibernate第九篇【组件映射、继承映射】

前言

到目前位置,我们已经学习了一对一、一对多、多对一、多对多映射了…既然Hibernate是ORM实现的框架,它还提供了组件映射和继承映射..本博文主要讲解组件映射和继承映射

Java主要的类主要有两种方式

  • 组合关系,组合关系对应的就是组件映射
  • 继承关系,继承关系对应的就是继承映射

组件映射

组件映射实际上就是将组合关系的数据映射成一张表,组件类和被包含的组件类映射成一张表

有的时候,两个类的关系明显不是继承关系,但两个类的亲密程度很高,在一个类里边需要用到另外一个类…那么就在类中定义一个变量来维护另一个类的关系,这种就叫组合关系!

需求:汽车和轮子。汽车需要用到轮子,但是轮子的爸爸不可能是汽车吧?

设计数据库

这里写图片描述

设计实体

Wheel.java


public class Wheel {

    private int  count;
    private int size;

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }
}

Car.java,使用变量维护Wheel

package zhongfucheng.aa;

/**
 * Created by ozc on 2017/5/7.
 */
public class Car {

    private int id;
    private String name;
    private Wheel wheel;

    public Wheel getWheel() {
        return wheel;
    }

    public void setWheel(Wheel wheel) {
        this.wheel = wheel;
    }

    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;
    }
}

映射表

使用了一个新标签<component>,组件映射标签。


<?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="zhongfucheng.aa" >

    <class name="Car" table="Car" >

        <!--映射主键-->
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>

        <!--映射普通字段-->
        <property name="name" column="name" ></property>


        <!--
            映射组件字段
        -->
        <component name="wheel">
            <property name="count"></property>
            <property name="size"></property>
        </component>

    </class>

</hibernate-mapping>

测试

package zhongfucheng.aa;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

/**
 * Created by ozc on 2017/5/6.
 */
public class App5 {
    public static void main(String[] args) {


        //创建对象
        Wheel wheel = new Wheel();
        Car car = new Car();

        //设置属性
        wheel.setCount(43);
        wheel.setSize(22);
        car.setName("宝马");

        //维护关系
        car.setWheel(wheel);
        //获取加载配置管理类
        Configuration configuration = new Configuration();


        configuration.configure().addClass(Car.class);

        //创建Session工厂对象
        SessionFactory factory = configuration.buildSessionFactory();

        //得到Session对象
        Session session = factory.openSession();

        //使用Hibernate操作数据库,都要开启事务,得到事务对象
        Transaction transaction = session.getTransaction();

        //开启事务
        transaction.begin();

        session.save(car);

        //提交事务
        transaction.commit();

        //关闭Session
        session.close();


    }
}

这里写图片描述

传统方式继承

需求:动物、猫、猴子。猫继承着动物

传统方式继承的特点就是:有多少个子类就写多少个配置文件.

表结构

我们的表应该是这样的:id和name从Animal中继承,catchMouse是子类的具体行为。

这里写图片描述

实体

Animal.java


package zhongfucheng.aa;

// 动物类
public abstract class Animal {

    private int id;
    private String name;


    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;
    }

}

Cat.java继承着Animail


package zhongfucheng.aa;

public class Cat extends Animal{

    // 抓老鼠
    private String catchMouse;

    public String getCatchMouse() {
        return catchMouse;
    }

    public void setCatchMouse(String catchMouse) {
        this.catchMouse = catchMouse;
    }
}

映射文件

简单继承的映射文件很好写,在属性上,直接写父类的属性就可以了。

但是也有致命的缺点:如果子类有很多,就需要写很多的配置文件


<?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="zhongfucheng.aa" >

    <class name="Cat" table="cat" >

        <!--映射主键-->
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>

        <!--
            映射普通字段
            父类的属性直接引用就行了,比如name属性,直接写就行了!
        -->
        <property name="name" column="name" ></property>
        <property name="catchMouse" column="catchMouse" ></property>


    </class>

</hibernate-mapping>

测试


package zhongfucheng.aa;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class App5 {
    public static void main(String[] args) {


        //创建对象
        Cat cat = new Cat();

        //设置属性

        cat.setName("大花猫");
        cat.setCatchMouse("捉大老鼠");

        //获取加载配置管理类
        Configuration configuration = new Configuration();


        configuration.configure().addClass(Cat.class);

        //创建Session工厂对象
        SessionFactory factory = configuration.buildSessionFactory();

        //得到Session对象
        Session session = factory.openSession();

        //使用Hibernate操作数据库,都要开启事务,得到事务对象
        Transaction transaction = session.getTransaction();

        //开启事务
        transaction.begin();

        session.save(cat);

        //如果取数据时候Animal父类接收的话,需要给出Anmail的全名


        //提交事务
        transaction.commit();

        //关闭Session
        session.close();


    }
}

这里写图片描述


把所有子类映射成一张表

前面我们采用的是:每个子类都需要写成一个配置文件,映射成一张表…

如果子类的结构很简单,只比父类多几个属性。就像上面的例子…我们可以将所有的子类都映射成一张表中

但是呢,这样是不符合数据库设计规范的…..因为表中的数据可能是猫,可能是猴子…这明显是不合适的…

由于表中可能存在猫,存在猴子,为了区分是什么类型的。我们需要使用鉴别器

我们了解一下…

数据表

这里写图片描述

实体

实体和上面雷同,只多了一个猴子的实体表

Monkey.java


public class Monkey extends Animal {

    // 吃香蕉
    private String eatBanana;

    public String getEatBanana() {
        return eatBanana;
    }

    public void setEatBanana(String eatBanana) {
        this.eatBanana = eatBanana;
    }

}

映射文件

使用了subClass这个节点和鉴别器

<?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="cn.itcast.e_extends2">

    <class name="Animal" table="t_animal">
        <id name="id">
            <generator class="native"></generator>
        </id>
        <!-- 指定鉴别器字段(区分不同的子类) -->
        <discriminator column="type_"></discriminator>

        <property name="name"></property>

        <!-- 
            子类:猫
                每个子类都用subclass节点映射
                注意:一定要指定鉴别器字段,否则报错!
                鉴别器字段:作用是在数据库中区别每一个子类的信息, 就是一个列
            discriminator-value="cat_"
                指定鉴别器字段,即type_字段的值
                如果不指定,默认为当前子类的全名
         -->
         <subclass name="Cat" discriminator-value="cat_">
            <property name="catchMouse"></property>
         </subclass>

         <!-- 
            子类:猴子
          -->
          <subclass name="Monkey" discriminator-value="monkey_">
            <property name="eatBanana"></property>
          </subclass>

    </class>


</hibernate-mapping>

测试

加载的是Animal父类的映射文件。保存的是cat和monkey。


package zhongfucheng.aa;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class App5 {
    public static void main(String[] args) {


        //创建对象
        Cat cat = new Cat();
        Monkey monkey = new Monkey();

        //设置属性
        cat.setName("大花猫");
        cat.setCatchMouse("小老鼠");
        monkey.setEatBanana("吃香蕉");
        monkey.setName("大猴子");

        //获取加载配置管理类
        Configuration configuration = new Configuration();

        //加载Animal的映射文件!
        configuration.configure().addClass(Animal.class);

        //创建Session工厂对象
        SessionFactory factory = configuration.buildSessionFactory();

        //得到Session对象
        Session session = factory.openSession();

        //使用Hibernate操作数据库,都要开启事务,得到事务对象
        Transaction transaction = session.getTransaction();

        //开启事务
        transaction.begin();

        session.save(cat);
        session.save(monkey);

        //提交事务
        transaction.commit();

        //关闭Session
        session.close();


    }
}

这里写图片描述


每个类映射一张表(3张表)

父类和子类都各对应一张表。那么就有三张表了

这种结构看起来是完全面向对象,但是表之间的结构会很复杂,插入一条子类的信息,需要两条SQL

数据表设计

这里写图片描述

映射文件

使用到了<joined-subclass >这个节点

<?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="zhongfucheng.aa">

    <class name="Animal" table="t_animal">
        <id name="id">
            <generator class="native"></generator>
        </id>

        <property name="name"></property>


        <!--
            Animal下的子类映射成一张表
                指定子类的类型,对应的表
                指定子类的外键字段【需要对应Animal】
                指定子类的普通属性
        -->
        <joined-subclass name="Cat" table="cat_">
            <!--key对应的是外键字段-->
            <key column="animal_id"></key>
            <property name="catchMouse"></property>
        </joined-subclass>

        <joined-subclass name="Monkey" table="monkey_">
            <!--key对应的是外键字段-->
            <key column="animal_id"></key>
            <property name="eatBanana"></property>
        </joined-subclass>


    </class>


</hibernate-mapping>


测试

package zhongfucheng.aa;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class App5 {
    public static void main(String[] args) {


        //创建对象
        Cat cat = new Cat();
        Monkey monkey = new Monkey();

        //设置属性
        cat.setName("大花猫");
        cat.setCatchMouse("小老鼠");
        monkey.setEatBanana("吃香蕉");
        monkey.setName("大猴子");

        //获取加载配置管理类
        Configuration configuration = new Configuration();

        //加载类对应的映射文件!
        configuration.configure().addClass(Animal.class);

        //创建Session工厂对象
        SessionFactory factory = configuration.buildSessionFactory();

        //得到Session对象
        Session session = factory.openSession();

        //使用Hibernate操作数据库,都要开启事务,得到事务对象
        Transaction transaction = session.getTransaction();

        //开启事务
        transaction.begin();

        session.save(cat);
        session.save(monkey);

        //提交事务
        transaction.commit();

        //关闭Session
        session.close();


    }
}

每保存一个子类对象需要两条SQL语句!

这里写图片描述


(推荐)每个子类映射一张表, 父类不对应表(2张表)

  • 使用过了一张表保存所有子类的数据,这不符合数据库设计规范
  • 每个子类、父类都拥有一张表..表结构太过于繁琐..添加信息时,过多的SQL

我们即将使用的是:每个子类映射成一张表,父类不对应表…这和我们传统方式继承是一样的。只不过在hbm.xml文件中使用了<union-subclass>这个节点,由于有了这个节点,我们就不需要每个子类都写一个配置文件了。

数据库表设计

这里写图片描述

映射文件

  • 想要父类不映射成数据库表,只要在class中配置为abstract即可
  • 使用了union-subclass节点,主键就不能采用自动增长策略了。我们改成UUID即可。当然啦,对应的实体id类型要改成String

<?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="zhongfucheng.aa">


    <!--
        想要父类不映射成表,设置成abstract
    -->
    <class name="Animal" abstract="true">

        <!--
            如果使用了union-subclass节点,那么主键生成策略不能是自增长,我们改成uuid即可
        -->
        <id name="id">
            <generator class="uuid"></generator>
        </id>

        <property name="name"></property>


        <!--
            将子类的信息都映射成一张表
                给出属性的名称
                属性对应的数据库表
                普通字段
        -->
        <union-subclass name="Cat" table="cat_">
            <property name="catchMouse"></property>
        </union-subclass>

        <union-subclass name="Monkey" table="monkey_">
            <property name="eatBanana"></property>
        </union-subclass>


    </class>


</hibernate-mapping>

测试


package zhongfucheng.aa;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class App5 {
    public static void main(String[] args) {


        //创建对象
        Cat cat = new Cat();
        Monkey monkey = new Monkey();

        //设置属性
        cat.setName("大花猫");
        cat.setCatchMouse("小老鼠");
        monkey.setEatBanana("吃香蕉");
        monkey.setName("大猴子");

        //获取加载配置管理类
        Configuration configuration = new Configuration();

        //加载类对应的映射文件!
        configuration.configure().addClass(Animal.class);

        //创建Session工厂对象
        SessionFactory factory = configuration.buildSessionFactory();

        //得到Session对象
        Session session = factory.openSession();

        //使用Hibernate操作数据库,都要开启事务,得到事务对象
        Transaction transaction = session.getTransaction();

        //开启事务
        transaction.begin();

        session.save(cat);
        session.save(monkey);

        //提交事务
        transaction.commit();

        //关闭Session
        session.close();


    }
}

这里写图片描述

总结

由于我们的传统继承映射每个子类都对应一个配置文件,这样十分麻烦。因此.hbm.xml就给出了几个节点供我们使用,分别有以下的情况:

  • 子类父类共有一张表subclass
    • 不符合数据库设计规范
    • 需要使用鉴别器
  • 子类、父类都有自己的表joined-subclass,那么就是三张表
    • 表的结构太过繁琐
    • 插入数据时要生成SQL至少就要两条
  • 子类拥有自己的表、父类不对应表【推荐】union-subclass
    • 父类不对应表要使用abstract来修饰
    • 主键的id不能使用自增长策略,修改成UUID就好了。对应的JavaBean的id设置成String就好

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
java实现长短期记忆人工神经网络LSTM(附完整源码) 阅读详情

相关推荐

PackML工业标准解析:统一机器状态管理与数据交换的实践指南

在工业自动化与智能制造领域,实现设备间的互联互通与高效协同是核心挑战。这背后依赖于一套标准化的机器行为与数据交换规范,其原理在于通过定义统一的状态模型与接口协议,消除不同厂商设备间的“语言”隔阂。这项技术的核心价值在于大幅降低系统集成复杂度、提升运维效率与生产透明度,是构建数字化工厂的基石。其典型应用场景包括包装机械、离散制造产线等需要多设备协同的领域。本文聚焦的PackML(包装机械语言)标准,正是这一理念的杰出实践,它通过一套严谨的**状态机模型**和**数据标签(PackTags)** 体系,为机器提

weixin_30070339的博客 401

告别手动导入!用vite-plugin-vue-setup-extend简化Vue 3组件开发(附避坑指南)

本文介绍如何使用vite-plugin-vue-setup-extend插件简化Vue 3组件开发,自动处理常用API的导入,提升开发效率。通过详细配置指南和避坑建议,帮助开发者快速集成该插件到Vite项目中,减少重复代码,优化开发体验。

weixin_30952535的博客 410

电子数据取证实战:从“平航杯”竞赛看计算机检材分析的关键技术与案例解析

本文通过'平航杯'电子数据取证竞赛案例,深入解析计算机检材分析的关键技术,包括USB设备追踪、浏览器历史分析、AI换脸取证、虚拟货币交易追踪等实战技巧。重点探讨了数字痕迹的发现与关联,以及电子取证工具链的应用,为从业人员提供实用的技术参考和案例分析。

www00的博客 537

Hibernate高级映射 --- 组件映射

Hibernate高级映射 --- 组件映射 一 概念 1.组件映射概念 Hibernate建议在进行领域模型建模时要细粒度一些,简单的说,就是类要比表多,这种映射就是组件映射 组件类是值类型的,即它没有对象标识符属性,在数据库中也没有对应的表,它只隶书于另一个持久化类的实例。它的数据被嵌入到所隶书的持久化实例对应的数据库表的记录中。 2.组件映射的应用有三种常见的情况: (1)把...

yaasshole 187

【Apollo学习笔记】——规划模块TASK之SPEED_HEURISTIC_OPTIMIZER

在Apollo星火计划学习笔记——Apollo路径规划算法原理与实践与【Apollo学习笔记】——Planning模块讲到……Stage::Process的函数会依次调用task_list中的TASK,本文将会继续以LaneFollow为例依次介绍其中的TASK部分究竟做了哪些工作。由于个人能力所限,文章可能有纰漏的地方,还请批评斧正。在配置文件中,我们可以看到LaneFollow所需要执行的所有task。本文将继续介绍LaneFollow的第10个TASK——动态规划规划目标加速度尽可能小。

sinat_52032317的博客 3425

python轮胎缺陷检测_基于深度学习的轮胎缺陷无损检测与分类技术研究

基于深度学习的轮胎缺陷无损检测与分类技术研究【摘要】:随着汽车行业快速发展及汽车保有量的持续增长,大大增加了对轮胎的需求,而轮胎质量在很大程度上决定了轮胎的使用寿命,也是在行驶过程中对人们生命财产安全的保障,同时对轮胎进行在线质量检测也便于轮胎生产企业及时发现生产线中存在的不合格产品,以此来调整机械设备甚至轮胎的生产工艺,避免造成生产材料的浪费。因此,检测轮胎质量是轮胎生产过程中必不可缺少的一部分...

weixin_39689428的博客 1425

前端组件数据映射解析(自定义表格生成)

前端生成自定义表格,后端解析并合并数据

yj18037616526的博客 1478

【数据分析/商业分析】面试题整理——SQL专题

数据分析\商业分析—面试题整理 自己总结的SQL类的面试题 文章目录数据分析\商业分析—面试题整理1.新增用户2.活跃用户数量3.连续登录4.次(n)日留存5.每个科目下分数最高的两名学生

awater_17的博客 1859

组件映射

组件映射

H华华的博客 879

欢乐熊大话蓝牙知识16:蓝牙是怎么找设备的?扫描与广播的“对话内幕”

蓝牙是怎么找设备的?扫描与广播的对话技术介绍

hoony123的博客 1381

AI Agent开发大全第一课-AI是什么以及如何使用AI

近年来,人工智能的迅猛发展引发了广泛的关注,尤其是“大模型”这一概念越来越深入人心。大模型,顾名思义,通常指的是那些拥有大量参数、能够处理复杂任务的机器学习模型。与传统小模型相比,大模型在数据处理、信息理解和生成等方面表现更加出色。为了理解为什么现在的AI被称为大模型,我们需要深入探讨几个关键因素。立角色是指在提示词中清晰地界定交互双方的身份。明确用户希望模型扮演的角色,可以帮助模型更准确地理解上下文和用户需求。

打造全国最全的AI Agent开发知识领域的博客 1406

Hibernate组件映射

Hibernate联合主键映射以及组件映射 在Hibernate中联合主键的形成有两种可能:一种是由多对多映射形成的,多对多映射会形成第三张表,一般来说第三张表的主键是由其他两张表的主键构成的(比如学生表,课程表,选课表)。第二种情况就是很常见的情况,即只有一张表,表的主键是由本身的两个字段或以上构成的。比如:公司的财务统计表,其中有字段年份、月份、销售金额。在这张表中年份和月份才唯一确定...

weixin_33769207的博客 148

【WRF-Urban】WUDAPT详解:An Urban Weather, Climate, and Environmental Modeling Infrastructure

WUDAPT详解:An Urban Weather, Climate, and Environmental Modeling Infrastructure

WW、forever的博客 497

java继承 映射_Hibernate第九篇【组件映射、继承映射】

前言到目前位置,我们已经学习了一对一、一对多、多对一、多对多映射了…既然Hibernate是ORM实现的框架,它还提供了组件映射和继承映射..本博文主要讲解组件映射和继承映射Java主要的类主要有两种方式组合关系,组合关系对应的就是组件映射继承关系,继承关系对应的就是继承映射组件映射组件映射实际上就是将组合关系的数据映射成一张表,组件类和被包含的组件类映射成一张表有的时候,两个类的关系明显不是继承...

weixin_29883023的博客 198

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Hibernate征途(五)之继承映射和组件映射

之所以把这两种映射放到一起说,是因为二者都是以复用为目的,减少了代码和配置量,这是相同点;二者之间的不同点类似继承和实现的区别:继承的类是一个事物的抽象,而实现的接口仅仅是功能的抽象。 继承映射 如上面所说,如下图:

李达 2050

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Hibernate继承关系映射

在关系数据模型中,用外键参照关系来表示继承关系,子类对应的表中存在外键参照父类对应表的主键。继承父类的一些属性,但不用父类作为映射实体时使用注解:@MappedSuperclass。每个子类所对应的表中同时存在从父类继承的属性和自己特有的属性。在表中加入额外的字段区分子类的类型,表中包含父类和所有子类的属性对应的字段。[缺点]:如果要查询父类的对象,必须查询所有具体的子类对应的表。[优点]:如果某个类的属性发生变化,只需要修改该类所对应的表。[缺点]:如果父类的属性发生变化,必须修改所有子类对应的表。

LIUCHANGSHUO的博客 986

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Hibernate继承映射之一_用一张表映射

这次给大家发的是hibernate的继承映射,继承映射的实例有很多:例如dog、cat都是animal的子类 这里用的是文章Article、主题Topic和回复Reply给大家做讲解。

机智猫 1万+

组件映射、继承映射

一、组件映射 1.概念 类组合关系的映射,也叫作组件映射! 注意:组件类和被包含的组件类,共同映射到一张表! 2.需求 汽车与车轮 3.数据库T_Car 主键 汽车名称 轮子大小 个数 4.Car /** * Created by qianxingzhe on 16/5/28. */ public class Car { private int id; ...

aokouzan2865的博客 156

Hibernate继承映射详解

在面向对象的程序领域中,类与类之间是有继承关系的,例如Java世界中只需要extends关键字就可以确定这两个类的父子关系,但是在关系数据库的世界中,表与表之间没有任何关键字可以明确指明这两张表的父子关系,表与表是没有继承关系这样的说法的。为了将程序领域中的继承关系反映到数据中,Hibernate为我们提供了3中方案: 第一种方案:一个子类对应一张表。 第二种方案:使用一张表表示所有继承体系下

鹏霄万里展雄飞 2527

Hibernate继承映射之三_用多张表映射2

【回顾】Hibernate继承映射之一_用一张表映射 【回顾】Hibernate继承映射之二_用多张表映射 这次给大家带来的是继承映射的第二种方法:用多张表映射,每张表都有公共字段! 映射情景回顾以及各实体类在这里就不重复写了,需要的都在:http://blog.youkuaiyun.com/nthack5730/article/details/45366983 【因为除了映射文件改变而已

机智猫 1万+

hibernate映射关系——继承映射

今天这篇博客,说的是hibernate的继承映射。 一、以前使用过继承映射吗?       刚听到继承映射的时候,不知道是怎么一回事。视频看完,哦,原来我使用过。没有学习过ORM之类知识的孩子们,如果是第一次听说,不要担心,你们一定使用过,只是不知道它用过这样一个名称而已。看下面的表:          这样的表结构,是不是很熟悉的。这就是继承映射的一种。     特点:

王勇霞 信息技术提高班九期 1987

Hibernate映射解析---继承映射

现实世界中有很多种动物,比如:Pig(猪),Bird(鸟)等等,当我用面向对象的思想分析时,我们一般会将它们的共同部分抽取出来增加一个抽象类Animal(动物),这样在编写程序时Pig和Bird只需要继承它们的父类Animal就可以省去很多重复的代码。Java代码中只需要extends关键字就可以轻松实现这种继承关系,但是对于我们使用的关系型数据库是没有任何关键字可以指明这种继承关系的。为了将这种

黄爱岗廊坊师范学院信息技术提高班 第七期 3765

Hibernate继承映射之二_用多张表映射1

【回顾】Hibernate继承映射之一_用一张表映射 这次给大家带来的是继承映射的第二种方法:用多张表映射,每张表只有自己独立的信息,没有公共字段! 映射情景回顾以及各实体类在这里就不重复写了,需要的都在:http://blog.youkuaiyun.com/nthack5730/article/details/45366983 【因为除了映射文件改变而已】 映射文件,这次只有一个:A

机智猫 1万+

18. Hibernate 继承映射

本节课程和大家一起学习继承映射。什么是继承映射;实现继承映射的 3 种方案。

这是一个web全栈开发的博客,取其精华去其糟粕,争取让大家一看就懂,一学就会,一用就成~ 1295

Hibernate学习-10-组件映射和继承映射

类的关系     组合关系        一个类中包含了另一个类。这两个类就是组合关系     继承关系       一个类继承一个关系 组件映射 com.cx.component.Car package com.cx.component; /** * Created by cxspace on 16-8-3. */ public class Car {

浮夸的程序员 223

Hibernate使用注解,继承映射写法

继承映射在 Annotation 中使用 @Inheritance 注解,并且需要使用 strategy 属性指定继承策略,继承策略有 SINGLE_TABLE、TABLE_PER_CLASS 和 JOINED 三种。 一、SINGLE_TABLE SINGLE_TABLE 是将父类和其所有的子类集合在一块,存在一张表中,并创建一个新的字段来判断对象的类型。 Person.j

focusぃclouds 5586
上一篇: eclipse复制到IDEA中文不匹配,编译失败
下一篇: Hibernate第十篇【Hibernate查询详解、分页查询】
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值