目的:表操作(表维护)

一、一对一(略过)

二、一对  1、建表原则:在多的一方创建外键指向一的一方的外键

2、建表:实体中添加

   商品实体表: private Set<User> user = new Hashset<User>();

   用户实体表:  private Shangping shangping; 

   对应的表映射关系:
    User.hbm.xml:
            <set name="User">
            <key column="user_cust_id"></key>
            <one-to-many class="对象全类名">
            </set>'
    Shangping.hbm.xml:
    <many-to-one name="shangping" class="对象全类名" column="user_cust_id" >
    以及hibernate.cfg.xml中添加:映射配置文件
    <mapping resource="配置文件路经" />
       

3、操作

1、参数:
  name属性:集合属性名
  column属性: 外键列名
  class属性: 与我关联的对象完整类名

2、级联操作: cascade
  save-update: 级联保存更新(推荐使用)
  delete:级联删除(不推荐啊)
  all:save-update+delete
  级联操作: 简化操作.目的就是为了少些两行代码.
3、索引维护
  inverse属性: 配置关系是否维护.
  true: customer不维护关系
  false(默认值): customer维护关系
  inverse属性: 性能优化.提高关系维护的性能.
  原则: 无论怎么放弃,总有一方必须要维护关系.
  一对多关系中: 一的一方放弃.也只能一的一方放弃.多的一方不能放弃.

<set name="User" inverse="true" cascade="delete" >
  <key column="user_cust_id" ></key>
  <one-to-many class="User" />
</set>

三、多对多

  1、建表原则:创建中间表,中间表中至少两个字段作为外键分别指向多对多双方的主键(既:类似于一对多)

  2、实体

User.java
private Set<User> users = new HashSet<User>();
Role.java
private Set<Role> roles = new HashSet<Role>();

  3、表操作

使用inverse属性
true: 放弃维护外键关系
false(默认值):维护关系

结论: 将来在开发中,如果遇到多对多关系.一定要选择一方放弃维护关系.
    一般谁来放弃要看业务方向. 例如录入员工时,需要为员工指定所属角色.
   那么业务方向就是由员工维护角色. 角色不需要维护与员工关系.角色放弃维护

<set name="users" table="sys_user_role" inverse="true" >
  <key column="role_id" ></key>
  <many-to-many class="User" column="user_id" ></many-to-many>
</set>

Hibernate-03的更多相关文章

  1. Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略

    Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. @Test publ ...

  2. Hibernate 系列 03 - 使用Hibernate完成持久化操作

    引导目录: Hibernate 系列教程 目录 康姆昂,北鼻,来此狗.动次打次,Hibernate继续走起. 目录: 使用Hibernate实现按主键查询 使用Hibernate实现数据库的增.删.改 ...

  3. 03 Hibernate错题分析

    1.在Hibernate中,以下关于主键生成器说法错误的是( C). A.increment可以用于类型为long.short或byte的主键 B.identity用于如SQL Server.DB2. ...

  4. 03.Hibernate一对多关联

    前言:在域模型中,类与类之间最普遍的关系就是关联关系,在UML语言中关联关系是有方向的.在数据库中表与表之间也会有关联关系,本节介绍通过Hibernate映射一对多的关联关系,这是一种最普遍的关联关系 ...

  5. Hibernate框架笔记03表操作多对多配置

    目录 1. 数据库表与表之间的关系 1.1 一对多关系 1.2 多对多关系 1.3 一对一关系[了解] 2. Hibernate的一对多关联映射 2.1 创建一个项目,引入相关jar包 2.2. 创建 ...

  6. Hibernate表关系03

    一. 一对多映射 1.基本应用 1.1 准备项目 创建项目:hibernate-02-relation 引入jar,同前一个项目 复制实体(客户).映射.配置.工具类 1.2 创建订单表 表名: t_ ...

  7. Exception 03 : org.hibernate.MappingException: Unknown entity: org.hibernate.cfg.Configuration

    异常名称 org.hibernate.MappingException: Unknown entity: org.hibernate.cfg.Configuration 异常详细信息 org.hibe ...

  8. Hibernate-ORM:03.Hibernate主键生成策略

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 此篇博客简单记录五种常用的主键生成策咯: 不同的主键生成策略,生成的sql语句,以及hibernate的操作都 ...

  9. Java进阶知识03 Hibernate的基础配置详解

    1.Hibernate的原理/流程步骤 1.通过Configuration().configure(); 读取并解析hibernate.cfg.xml配置文件,并创建一个configuration对象 ...

  10. 03.Hibernate配置文件之核心配置文件

    一.核心配置文件的两种配置方式 1.属性文件方式 hibernate.properties(基本不会选用 hibernate.connection.driver_class=com.mysql.jdb ...

随机推荐

  1. python 测试用例

    mydict.py代码如下: class Dict(dict): def __init__(self, **kw): super().__init__(**kw) def __getattr__(se ...

  2. iOS 获取类的字符串名称 Swift4

    以下实例基于Swift4,且在class, struct, enum中都可用:     class Foo { // 实例属性中指定明确的类名来获取名称 var typeName: String { ...

  3. HBuilder mui 报错No 'Access-Control-Allow-Origin' header

    Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' he ...

  4. Selenium | 基础入门 | 截屏并保存于本地

    可先参考   Selenium | 基础入门 | 利用Xpath寻找用户框 核心代码: //截屏操作 File srcFile = ((TakesScreenshot)driver).getScree ...

  5. the little schemer 笔记(9)

    第九章 ...and Again, and Again, and, Again, ... 你想来点鱼子酱吗? 那就去找它吧. (looking a lat)是什么,其中a是 caviar, lat是( ...

  6. _bzoj1096 [ZJOI2007]仓库建设【斜率优化dp】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1096 又是一道经典斜率优化. #include <cstdio> const i ...

  7. 洛谷1736(二维dp+预处理)

    洛谷1387的进阶版,但很像. 1387要求是“全为1的正方形”,取dp[i][j] = min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1]))吧?这个有“只有对 ...

  8. 数位dp知识点整理

    题解报告:hdu 2089 不要62 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌 ...

  9. pwa-serviceWorker与页面通信postMessage

    https://ppt.geekbang.org/list/gmtc2018?from=groupmessage&amp%3Bisappinstalled=0 http://www.sohu. ...

  10. jmeter(十九)调试工具Debug Sampler

    一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter v ...