Rhythmk 学习 Hibernate 06 - Hibernate 表间关系 [One To One]
1、One To One 单相
背景:
古代一个老婆 只能关联一个老公
husband.java
package com.rhythmk.model;
public class husband {
public Integer getHusbandId() {
return husbandId;
}
public void setHusbandId(Integer husbandId) {
this.husbandId = husbandId;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
private Integer husbandId;
private String Name;
}
hasband.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.rhythmk.model">
<class name="husband" table="t_husband">
<id name="husbandId" type="int">
<column name="husbandId" />
<generator class="native" />
</id>
<property name="Name" type="string"> </property> </class>
</hibernate-mapping>
wife.java
package com.rhythmk.model;
public class wife {
private Integer wifeId;
private String name;
public Integer getWifeId() {
return wifeId;
}
public void setWifeId(Integer wifeId) {
this.wifeId = wifeId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public husband getHb() {
return hb;
}
public void setHb(husband hb) {
this.hb = hb;
}
private husband hb;
@Override
public String toString() {
return "wife [wifeId=" + wifeId + ", name=" + name + ", hb=" + hb + "]";
}
}
wife.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.rhythmk.model">
<class name="wife" table="t_wife">
<id name="wifeId" type="int">
<column name="wifeId" />
<generator class="native" />
</id>
<property name="Name" type="string">
</property>
<!-- one to one 类似于 one to many 只需要添加 unique =true 即可 -->
<many-to-one name="hb" column="husbandId" ></many-to-one>
</class>
</hibernate-mapping>
注意:
one to one 类似于 one to many 只需要添加 unique =true 即可
2、One To One 双向
跟单相查不多 就是两边都配上 many to one
调整 hasband.hbm.xml 添加:
<!-- one to one 类似于 one to many 只需要添加 unique =true 即可 -->
<many-to-one name="mywife" column="wifeId" ></many-to-one>
调整 husband.java :
public wife getMywife() {
return mywife;
}
public void setMywife(wife mywife) {
this.mywife = mywife;
}
private wife mywife;
测试:
@Test
public void test02_add() {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction(); husband hb = new husband();
hb.setName("王大1");
wife w = new wife();
w.setName("张妞 2");
w.setHb(hb);
hb.setMywife(w);
session.save(hb);
session.save(w);
System.out.println(w.toString());
session.getTransaction().commit(); } catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null)
session.close();
}
}
输出:
Hibernate: insert into t_husband (Name, wifeId) values (?, ?)
Hibernate: insert into t_wife (Name, husbandId) values (?, ?)
wife [wifeId=6, name=张妞 2, hb=com.rhythmk.model.husband@8b677f]
Hibernate: update t_husband set Name=?, wifeId=? where husbandId=?
代码下载地址:
http://pan.baidu.com/s/1gdFt7ur
Rhythmk 学习 Hibernate 06 - Hibernate 表间关系 [One To One]的更多相关文章
- Hibernate第三天——表间关系与级联操作
第三天,我们来使用Hibernate进行表之间一对多 多对多关系的操作: 这里我们先利用两个例子进行表关系的回顾: 一对多(重点): 例如分类和商品的关系,一个分类多个商品,一个商品属于一个分类 CR ...
- EF简易教程,从建表到表间关系
唐大兵博客 唐大兵的博客里记录了EF Code First从建表到表之间关系的详细内容. 汪杰的博客(EF里一对一.一对多.多对多关系的配置和级联删除) 汪杰的博客更简洁,但不够充实,读懂了唐大兵博客 ...
- Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [ManyToOne,OneToMany]
1.项目结构: 1.1.场景说明: 一个订单,包含多个产品 1.2.类文件: Order.java package com.rhythmk.model; import java.util.Date; ...
- Node.js ORM框架Sequlize之表间关系
Sequelize模型之间存在关联关系,这些关系代表了数据库中对应表之间的主/外键关系.基于模型关系可以实现关联表之间的连接查询.更新.删除等操作.本文将通过一个示例,介绍模型的定义,创建模型关联关系 ...
- 自增特性,外键,级联更新与级联删除,表间关系,SELECT用法,GROUP BY
自增特性 自动增长的作用: 问题:为数据表设置主键约束后,每次插入记录时,如果插入的值已经存在,会插入失败. 如何解决:为主键生成自动增长的值. 自动增长的语法: 字段名 数据类型 AUTO_INCR ...
- MicroERP开发技术分享:vsFlexGrid、scriptControl实现工资表自定义列与表间关系计算
开发大型的MIS系统,肯定是离不开第三方控件的,同时也要根据项目需要自己写几个. MicroERP共用了以下几个控件: 第三方商业控件: vsFlexGrid:大名鼎鼎的表格控件,不用多说,配合vsP ...
- 【jQuery基础学习】06 jQuery表单验证插件-Validation
jQuery的基础部分前面都讲完了,那么就看插件了. 关于jQuery表单验证插件-Validation validation特点: 内置验证规则:拥有必填.数字.E-Mail.URL和信用卡号码等1 ...
- Django 的ORM 表间操作
Django之ORM表间操作 之前完成了简单的数据库数据增加操作.这次学习更多的表间操作. 单表操作 增加 方式一 b = Book(title="Python基础", pub ...
- sql语句之表间字段值复制遇到的一些问题--基于mysql
好久没来园子了,转眼2017已经到3月份了,前段时间一直忙没时间写博客(其实是自己懒),感觉内心好惭愧.昨天临下班前,技术老大突然对我说要改下表结构,问我能不能实现将一个表的字段值复制到另外一个表的某 ...
随机推荐
- Android------视频播放器(包含全屏播放,快退,快进,腾讯新闻的列表播放等)
前段时间做了一个新闻APP,涉及到了列表视频播放,和腾讯新闻APP差不多,总结了一下代码,写了一个Demo来分享给大家. 用了 TabLayout+RecylerView+自定义视频控件 完成的 ...
- 005PHP文件处理——目录操作,统计大小 filesize unlink
<?php /* 目录操作,统计大小 filesize unlink * */ $dir = dir("."); while (($file = $dir->read( ...
- 【解决】Android 2.x 不支持overflow、position:fixed解决方案【转】
Android 2.x和IOS5以下都不支持overflow:auto属性(position:fixed也不支持). 移动端浏览器兼容性和PC端相比,有过之而无不及.操作系统版本及各式浏览器和各式的屏 ...
- xml生成javabean(zhuan)
package com.dom4j; import java.io.File;import java.io.FileWriter;import java.io.IOException;import j ...
- 【转】MongoDB 3.0 正式版本即将发布,强力推荐
MongoDB 今天宣布3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都有 ...
- [置顶]
【机器学习PAI实践十一】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码
背景 最近互联网上出现一个热词就是"freestyle",源于一个比拼rap的综艺节目.在节目中需要大量考验选手的freestyle能力,freestyle指的是rapper即兴的 ...
- fullfile
这个我总是忽略,见过也不少了,顺便写写,其实一些命令很方便的. 一个例子: root_dir = '../mcg/pre-trained'; addpath(root_dir); addpath(fu ...
- c++ istringstream的用法
一.测试代码 istringstream 是将字符串变成字符串迭代器一样,将字符串流在依次拿出,比较好的是,它不会将空格作为流.这样就实现了字符串的空格切割. #include<iostream ...
- HDU1300 Pearls(可斜率优化)
+)*= +)*= .总共需要的花费是150+=++)*= .在两组数据看来.珍珠都买了高品质的了,而且花费也少了!问题是怎么样能花费最少买珍珠! Add:合并肯定是相邻的合并.比如啊a<b&l ...
- POJ 2406Power Strings(KMP)
POJ 2406 其实就是一个简单的kmp应用: ans = n % (n - f[n]) == 0 ? n / (n - f[n]) : 1 其中f是失配函数 //#pragma comment(l ...