用户登录
用户注册

分享至

hibernate 映射父类

  • 作者: 半萌半骚长发及腰
  • 来源: 51数据库
  • 2020-12-18
*1)父类和子类都有对应的表,使用定义继承关系,使用步骤如下
a.将父表和子表生成单表的基本映射
b.将子类添加extends父类
c.利用定义子类映射
从Hibernate3.0版本开始,可以将单独取出,放到一个hbm.xml中定义.格式如下



//property字段映射


*2)父类和子类使用同一张数据表

选择题:
编号,题目,难度,选项,选择答案
简答题:
编号,题目,难度,简答答案
数据表Question
编号,题目,难度,选项,选择答案,简答答案,题目类型
使用定义子类映射,具体步骤:
a.修改实体类,定义成父类和子类的结构
b.在映射文件中定义映射


//定义父类中属性的映射


//定义子类1中属性的映射


//定义子类2中属性的映射




以上是两种继承关系映射,注意一点配置的映射,对应两张表,两张实体类,两表的id应该是一一对应的,即同一个id代表的是一个实物,还有一但定义该映射,用hibernate查询时候 即使是 from 父类,获得的结果实际也是子类的一个list集合




  基本上都比较常用,非说那个不常用的话一对一用得可能能少点,下面说下我的理解,我尽量说通俗点
我下面就举几个例子你就明白了:
1、一对一,比如一个表的字段有100多个,而且其中有40个其他表可能有用,那么你把这个表拆分成两个表,并且两个表中的数据都是一条记录对应一条记录,某一个表中存放另一个对应表的id用来维护两个记录之间的关系,因为本来这两条记录原来就是一条记录,不知道这么说你能明白吗?
2、一对多,如:部门表与用户表,一个部门是不是有多个用户,但是一个用户有且只有一个部门,很清晰了吧
3、多对一,相当于吧部门表与用户表打颠倒
4、多对多,其实就是一对多与多对一结合起来实现的关系,如用户表与权限表,一个用户有多个权限,而一个权限同时对应多个用户,两个结合起来就是多对多
5、单向双向只是hibernate的概念,比如你这两个表a---表b,这样通过表a来维护表b的数据,但是表b不能维护表a,这就是单项,双向现在应该就好解释了,通过两个表都可以相互管理对方的数据。书面点,单项就是由父类管理关联关系,子类无法管理,双向父类子类都可管理。
hibernate提出的这些关系都有相应的配置,其实这些关系在数据库中一直是存在的,只是hibernate对这些关系都通过不同的配置实现,单向和双向也有相应的配置,这些功能当然也可以不通过hibernate配置实现,自己在代码中维护这块关系也可以,单双向,数据库中没有类似相关概念,hibernate提出这块功能,我们可以通过配置完成他们的限制功能。想想如果我们代码只提供用户表管理部门表的功能,不给通过部门管理用户的方法,那么这是不是就类似于hibernate的单向概念呢?
时间有限就说这么多,都是自己在项目中的一些积累,可能有些地方理解不够深刻,包含包含
软件
前端设计
程序设计
Java相关