单边的多对一关系

单边的多对一关系与单边的一对多关系刚好相反,多方有一方的引用,一方没有多方的引用,但是他们的数据表间的关系是一样的。例如:论文与论文类别;

具体实现如下:

Type实体类的java注解配置比较简单。由于没有Article引用,Type就是最普通的POJO实体,主键为id属性,只有一个String类型的普通属性name。注意:name被配置为unique的,利用数据库提供的unique约束保证数据库中不会有重复的数据。

Type.java

package com.lmb.hibernate.bean;import javax.persistence.*;@Entity
@Table(name="tb_type")
public class Type {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Integer id;@Column(unique = true)private String name;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;}
}

Article属性中有一个Type类型的属性。该属性将配置为ManyToOne的。Article中配置了级联操作PERSIST,如果Type对象没有被持久化,则持久化Article对象是会一并持久化Type对象。由于content字段内容可能比较长,因此配置content列的数据库类型为text。如果要存储更多的内容,可配置为longtext。

Article.java

package com.lmb.hibernate.bean;import javax.persistence.*;@Entity
@Table(name="tb_article")
public class Article {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Integer id;private String name;@Column(columnDefinition = "text")private String content;@ManyToOne(cascade = {CascadeType.PERSIST},fetch = FetchType.EAGER)@JoinColumn(name = "type_id")private Type type;//getters and setterspublic 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 String getContent() {return content;}public void setContent(String content) {this.content = content;}public Type getType() {return type;}public void setType(Type type) {this.type = type;}
}

将两个实体配置到hibernate配置文件中。

hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration><session-factory><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8</property><property name="connection.username">lmb</property><property name="connection.password">lmb</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><mapping class="com.lmb.hibernate.bean.Person" /><mapping class="com.lmb.hibernate.bean.Email" /><mapping class="com.lmb.hibernate.bean.Type" /><mapping class="com.lmb.hibernate.bean.Article" /></session-factory></hibernate-configuration>

测试方法:

先实例化一个Type对象,一个Article对象,并设置批次的依赖关系。然后通过HibernateSessionFactory打开一个session会话,开启Transaction事务,然后保存Article对象。由于Article中设置了级联保存,保存Article时hibernate将自动级联保存Type对象。然后查询所有的Article并输出。查看结果。

【Hibernate】Hibernate实体关系映射——单边的多对一关系相关推荐

  1. 【Hibernate】hibernate实体关系映射——单边的多对多关系

    //刘梦冰发表于2015-6-19 单边的多对多关系 多对一.一对多的关系只需要两个表即可,使用子表的外键与主表的主键连接就能存储主从关系.而对多对多的关系至少需要三个表,其中两个表保存两个实体类,另 ...

  2. 【Hibernate】Hibernate实体关系映射——双边的多对多关系

    //刘梦冰发表于2015-6-19 http://blog.csdn.net/lmb55/article/details/46565581讲述了单边的多对多关系,本文在该例的基础上近一步学习双边的多对 ...

  3. 【Hibernate】Hibernate实体映射——单边的一对多关系

    数据库中的表是有关系的,两个表之间可以通过外键关联.如果把表抽象为实体类,这些关系可以抽象为实体之间的一对一,一对多,多对一等关系.hibernate能处理这些复杂的关系,前提是要正确配置这些关系. ...

  4. 【Hibernate】Hibernate实体关系映射——单边的一对一关系

    //刘梦冰发表于2015-6-19 一对对一关系的情况要多一些,不仅在POJO层体现为一对一的,还要保证数据库中的关系是一对一的,不允许出现一个表的两行记录共用另一个表中同一行记录的情况.这可以通过设 ...

  5. 【HibernateHibernate实体关系映射——双边的多对一、一对多关系

    双边的多对一.一对多关系 双边关系是最常见的配置.在多方有一方的引用,一方也有多方的引用.双边关系能够很方便的查询数据.下面以一个班级与学生的双边关系来深入学习. 班级(clazz类)与学生(stud ...

  6. hibernate 表关系映射详解之继承关系

    举例:亚马逊的网上商城可以卖很多东西,比如说图书,电器,水果等等,那么我们以面向对象的理念去抽象一个商品类,他具有商品的共有属性,比如说上架时间,当前         价格,优惠价格等待,商品可以继承 ...

  7. Hibernate关系映射

    Hibernate关系映射 Hibernate关系映射其实就是将关系模型中实体之间的三种关系--多对一(一对多).一对一.多对多映射成对象模型--Java这样的面向对象语言中相应的属性之间的关系. 多 ...

  8. Spring Boot 入门系列(二十八) JPA 的实体映射关系,一对一,一对多,多对多关系映射!...

    前面讲了Spring Boot 使用 JPA,实现JPA 的增.删.改.查的功能,同时也介绍了JPA的一些查询,自定义SQL查询等使用.JPA使用非常简单,功能非常强大的ORM框架,无需任何数据访问层 ...

  9. Hibernate旅程(五)Hibernate映射--基本类映射和对象关系映射

    回想一些我们在没有学习ssh的时候,我们建立数据库的表时,首先是数据库建模E-R图,然后再通过实体模型来建立关系模型,再建立相应的表.实体间存在三种关系,一对一,一对多(或者说多对一),多对多.而如今 ...

最新文章

  1. GODADDY主机用tar命令通过SSH远程打包20M以上的文件
  2. 设置Eclipse中的Courier New字体
  3. 【数据结构与算法】之深入解析“最大矩形”的求解思路和算法示例
  4. php开发用框架优缺点,剖析PHP开发中主流PHP框架的优缺点
  5. 扬尘监测系统_工地扬尘监测_工地扬尘监测解决方案
  6. php语言中字符,PHP开发语言中字符窜的高效率写法
  7. 使用Jasmine,Spock和Nashorn测试JVM服务器端JavaScript
  8. 市值突破3000亿,Fortinet发布2021Q2财报
  9. teamviewer开通防火墙策略
  10. 小米手机鸿蒙开机动画,华为“鸿蒙”来了!开机动画美炸了,用PPT一分钟就搞定...
  11. 计算机组成原理与汇编语言设计,计算机组成原理与汇编语言网络教学整体设计方案...
  12. oracle dataaccess component,Oracle Data Access Components (ODAC)
  13. Linux系统增加新硬盘
  14. oracle递归查询用法
  15. Integrated Skills of English_Unit2_Why My Great-uncle Gave Up the Ministry
  16. 共享汽车数据分析调研案例报告
  17. jzoj 1594: 【USACO】The Chivalrous Cow(骑士牛)( 待加入)
  18. 华为linux是否支持背光键盘,华为笔记本背光键盘怎么开
  19. HTML网页获取当前定位经纬度/地理位置定位/百度定位/高德定位
  20. 完整的生产车间管理流程是怎样的?六大步骤分享

热门文章

  1. 放出php压缩HTML函数,轻松压缩html、js和Css
  2. 我的20天项目经历--至今令我难忘的技术难题
  3. 三本新书(包含新系列)隆重上市
  4. Linux Shell高级技巧(一)
  5. Android语言国际化values资源文件命名规则
  6. C#中Cookies的读取
  7. 单元测试之—JUnit与SpringTest的完美结合
  8. IIC原理及简单流程
  9. 自动生成WebForm中对实体类的编辑页面
  10. P4556 雨天的尾巴