hibernate 建表一对一 就是一对多,多的一方外键唯一unique

Person.java


 1 package cn.itcast.hiberate.sh.domain.onetoone;
2
3 import java.io.Serializable;
4 import java.util.Set;
5
6 public class Person implements Serializable{
7 private Long cid;
8 private String cname;
9 private String description;
10
11 public Long getCid() {
12 return cid;
13 }
14
15 public void setCid(Long cid) {
16 this.cid = cid;
17 }
18
19 public String getCname() {
20 return cname;
21 }
22
23 public void setCname(String cname) {
24 this.cname = cname;
25 }
26
27 public String getDescription() {
28 return description;
29 }
30
31 public void setDescription(String description) {
32 this.description = description;
33 }
34
35 public Address getAddress() {
36 return address;
37 }
38
39 public void setAddress(Address address) {
40 this.address = address;
41 }
42
43 private Address address;
44 }

Person.hbm.xml


 1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4 <hibernate-mapping>
5 <class name="cn.itcast.hiberate.sh.domain.Classes">
6 <id name="cid" length="5" type="java.lang.Long">
7 <generator class="increment"></generator>
8 </id>
9 <property name="cname" length="20" type="java.lang.String"></property>
10
11 <property name="description" length="100" type="java.lang.String"></property>
12 <!--
13 set元素对应类中的set集合
14 通过set元素使classes表与student表建立关联
15 key是通过外键的形式让两张表建立关联
16 one-to-many是通过类的形式让两个类建立关联
17
18 cascade 级联
19 save-update
20 1、当 保存班级的时候,对学生进行怎么样的操作
21 如果学生对象在数据库中没有对应的值,这个时候会执行save操作
22 如果学生对象在数据库中有对应的值,这个时候会执行update操作
23 delete
24 all
25 inverse 维护关系
26 true 不维护关系
27 false 维护关系
28 default false
29 -->
30 <set name="students" cascade="save-update" inverse="true">
31 <!--
32 key是用来描述外键
33 -->
34 <key>
35 <column name="cid"></column>
36 </key>
37 <one-to-many class="cn.itcast.hiberate.sh.domain.Student"/>
38 </set>
39 </class>
40 </hibernate-mapping>

Address.java


 1 package cn.itcast.hiberate.sh.domain.onetoone;
2
3 import java.io.Serializable;
4
5 public class Address implements Serializable{
6 private Long sid;
7 private String sname;
8
9 private Person person;
10
11
12 public Person getPerson() {
13 return person;
14 }
15 public void setPerson(Person person) {
16 this.person = person;
17 }
18 public Long getSid() {
19 return sid;
20 }
21 public void setSid(Long sid) {
22 this.sid = sid;
23 }
24 public String getSname() {
25 return sname;
26 }
27 public void setSname(String sname) {
28 this.sname = sname;
29 }
30 public String getDescription() {
31 return description;
32 }
33 public void setDescription(String description) {
34 this.description = description;
35 }
36 private String description;
37 }

Address.hbm.xml  外键唯一


 1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4 <hibernate-mapping>
5 <class name="cn.itcast.hiberate.sh.domain.Student">
6 <id name="sid" length="5">
7 <generator class="increment"></generator>
8 </id>
9 <property name="sname" length="20"></property>
10 <property name="description" length="100"></property>
11 <!--
12 多对一
13 column 外键
14 -->
15 <many-to-one name="classes" class="cn.itcast.hiberate.sh.domain.Classes" column="cid" cascade="save-update" unique="true"></many-to-one>
16 </class>
17 </hibernate-mapping>

hibernate 建表一对一 就是一对多,多的一方外键唯一unique,布布扣,bubuko.com

时间: 2024-08-03 00:03:55

hibernate 建表一对一 就是一对多,多的一方外键唯一unique的相关文章

hibernate建表 一对多 多的一方控制一的一方

一对多 单向<one-to-many>通过calss操作student 外键在student表中,所以外键由student维护<many-to-one>通过student操作class 外键在student中,所以自动维护student的外键 没有inverse属性 建议用多对一这个方向的操作效率比较高 Student.java 1 package cn.itcast.hiberate.sh.domain; 2 3 public class Student { 4 private

hibernate建表一对多

级联操作,操作class对象的时候 级联操作 student Classes.java文件 1 package cn.itcast.hiberate.sh.domain; 2 3 import java.util.Set; 4 5 public class Classes { 6 private Long cid; 7 private String cname; 8 private String description; 9 public String getDescription() { 10

hibernate建表多对多建表

Student.java 1 package cn.itcast.hiberate.sh.domain; 2 3 import java.util.Set; 4 5 public class Student { 6 private Long sid; 7 private String sname; 8 private String description; 9 Set<Course> courses; 10 11 12 public Set<Course> getCourses()

Hibernate关联关系配置(一对一,一对多以及多对多)

hihernate一对多关联映射(单向Classes----->Student) 一对多关联映射利用了多对一关联映射原理 多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多 也就是说一对多和多对一的映射策略是一样的,只是站的角度不同 在一一端维护关系的缺点: * 如果将t_student表里的classesid字段设置为非空,则无法保存 * 因为不是在student这一端维护关系,所以student

SpringBoot与Mybatis整合(包含generate自动生成代码工具,数据库表一对一,一对多,关联关系中间表的查询)

链接:https://blog.csdn.net/YonJarLuo/article/details/81187239 自动生成工具只是生成很单纯的表,复杂的一对多,多对多要自己在xml中写! 添加mybatis的generator插件: 链接:https://blog.csdn.net/readyyy/article/details/85935365 原文地址:https://www.cnblogs.com/wskb/p/11582711.html

hibernate之关于一对一单向,双向关联映射

[hibernate]之关于一对一单向,双向关联映射 首先我们来看,Hibernate官方对于一对一单向关联的解释: 基于外键关联的单向一对一关联和单向多对一关联几乎是一样的.唯一的不同就是单向一对一关 联中的外键字段具有唯一性约束. ok,那我们也可以这样理解,一对一其实就是多对一关联的特殊形式,我们知道Hibernate的配置方式有两种,分别是Annotations,XML两种配置方式! Annotations的一对一单向关联映射 人(User)和***号(Card) @Entity @Ta

吃货眼中的sqlalchemy外键和连表查询

前言 使用数据库一个高效的操作是连表查询,一条查询语句能够查询到多个表的数据.在sqlalchem架构下的数据库连表查询更是十分方便.那么如何连表查询?以及数据库外键对连表查询有没有帮助呢?本篇文章就这两个问题简单解释. 建表 俗话说巧妇难为无米之炊,连表查询肯定要有表,有数据库啊.那有没有数据库是你见了垂涎三尺的呢?中国文化博大精深,饮食文化更是璀璨的明珠.我们就以中国菜系为话题,讲一讲好吃的,顺便再说一说外键和连表查询. 鲁菜  山东菜系,而且在明清两代,宫廷御膳是以鲁菜为主,鲁菜味道浓厚,

数据库建表原则

关键字: 数据库建表原则 ·1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处. [例]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历表.这就是“一张原始单证对应多个实体”的典型例子.

Hibernate之映射一对一关联

一.一对一关联的概念: 一对一之间的关联是指:两张表中的信息是一对一的关系,比如我们每个人和身份证的关系,一个人对应一张身份证,一张身份证也只能对应一个人. Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射. 在下面的例子中我们分别以两张表:员工表和员工档案表为例:介绍这两种映射关系方式. 二.按外键映射 1.关联的外键可存放于任意一端,并在存放外键的一端增加<many-to-one>元素,能够增加唯一约束实现一对一关联.        2.<many-t