hibernate一对多,细节讲解
1.一对多
1).首先创建两个实体类studeninfo.java跟studentxxb.java
1)studentinfo.java表如图:
package model; import java.util.Date;
import java.util.HashSet;
import java.util.Set; public class studentinfo {
private Integer id;
private String name;
private String aihao;
private Date sjina;
private Set<studentxxb> studentxxbs=new HashSet<>();
public studentinfo() {
super();
}
public studentinfo(Integer id, String name, String aihao, Date sjina, Set<studentxxb> studentxxbs) {
super();
this.id = id;
this.name = name;
this.aihao = aihao;
this.sjina = sjina;
this.studentxxbs = studentxxbs;
}
@Override
public String toString() {
return "studentinfo [id=" + id + ", name=" + name + ", aihao=" + aihao + ", sjina=" + sjina + ", studentxxbs="
+ studentxxbs + "]";
}
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;
}
public String getAihao() {
return aihao;
}
public void setAihao(String aihao) {
this.aihao = aihao;
}
public Date getSjina() {
return sjina;
}
public void setSjina(Date sjina) {
this.sjina = sjina;
}
public Set<studentxxb> getStudentxxbs() {
return studentxxbs;
}
public void setStudentxxbs(Set<studentxxb> studentxxbs) {
this.studentxxbs = studentxxbs;
}
}
2)stdentxxb.java如下图:
package model;
import java.util.Date;
public class studentxxb {
private Integer id;
private String dhua;
private String diz;
private studentinfo studentinfos;
public studentxxb() {
super();
}
public studentxxb(Integer id, String dhua, String diz, studentinfo studentinfos) {
super();
this.id = id;
this.dhua = dhua;
this.diz = diz;
this.studentinfos = studentinfos;
}
@Override
public String toString() {
return "studentxxb [id=" + id + ", dhua=" + dhua + ", diz=" + diz + ", studentinfos=" + studentinfos + "]";
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDhua() {
return dhua;
}
public void setDhua(String dhua) {
this.dhua = dhua;
}
public String getDiz() {
return diz;
}
public void setDiz(String diz) {
this.diz = diz;
}
public studentinfo getStudentinfos() {
return studentinfos;
}
public void setStudentinfos(studentinfo studentinfos) {
this.studentinfos = studentinfos;
}
}
2).两个实体类创建好了,接下来配置两个实体类的hbm.xml文件
1).实体类studentinfo.java的配置(studentinfp-mapping.hbm.xml)如图:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="model.studentinfo" table="studentinfo">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="name" column="name"></property>
<property name="aihao" column="aihao"></property>
<property name="sjina" column="sjina"></property>
<set name="studentxxbs">
<key>
<column name="student_xxbs"></column>
</key>
<one-to-many class="model.studentxxb"/>
</set>
</class> </hibernate-mapping>
2). 实体类studentxxb.java的配置(studentxxb-mapping.hbm.xml)如图:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="model.studentxxb" table="studentxxb">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="dhua" column="dhua"></property>
<property name="diz" column="diz"></property>
<many-to-one name="studentinfos" class="model.studentinfo" column="student_infos"></many-to-one> </class> </hibernate-mapping>
3)接下来配置cfg.xml文件这里命名为(hibernate.cfg.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="model.studentinfo" table="studentinfo">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="name" column="name"></property>
<property name="aihao" column="aihao"></property>
<property name="sjina" column="sjina"></property>
<set name="studentxxbs">
<key>
<column name="student_xxbs"></column>
</key>
<one-to-many class="model.studentxxb"/>
</set>
</class> </hibernate-mapping>
4)测试类 Testmain.java:
package test; import java.util.Date; import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import model.studentinfo;
import model.studentxxb; public class Testmain1 {
public static void main(String[] args) {
Session session=new Configuration().configure().buildSessionFactory().openSession();
Transaction tt=session.beginTransaction(); studentinfo studentinfo=new studentinfo();
studentinfo.setName("王胖子");
studentinfo.setAihao("爬山");
studentinfo.setSjina(new Date()); studentxxb xxb=new studentxxb();
xxb.setDiz("是是是");
xxb.setDhua("1111111");
studentinfo.getStudentxxbs().add(xxb);
xxb.setStudentinfos(studentinfo);
session.save(xxb);
session.save(studentinfo);
tt.commit();
session.close();
}
}
5)控制台运行结果:


6)数据库运行结果:

*先导包
hibernate一对多,细节讲解的更多相关文章
- Hibernate一对多配置
刚刚学习了Hibernate框架的基础知识,下面我来说说关于Hibernate一对多的配置 首先是大配置 连接数据库 用户名 和密码 能和小配置连接 部门小配置: 员工小配置: 部门实体类 员工实体类 ...
- hibernate 一对多双向关联 详解
一.解析: 1. 一对多双向关联也就是说,在加载班级时,能够知道这个班级所有的学生. 同时,在加载学生时,也能够知道这个学生所在的班级. 2.我们知道,一对多关联映射和多对一关联映射是一样的,都是在 ...
- Hibernate一对多OnetoMany
------------------------Hibernate一对多OnetoMany 要点: 配置在一端. 1.如果是单向关联,即只在一端配置OneToMany,多端不配置ManyToOne.则 ...
- Hibernate一对多单向关联和双向关联映射方法及其优缺点 (待续)
一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同.它们的区别在于维护的关系不同: 一对多关联映射是指在加载一的一端数据的同 ...
- Hibernate一对多操作
--------------------siwuxie095 Hibernate 一对多操作 以客户和联系人为例,客户是一,联系人是多 即 一个客户里面有多个联系人,一个联系人只能属于一个客户 注意: ...
- Java进阶知识10 Hibernate一对多_多对一双向关联(Annotation+XML实现)
本文知识点(目录): 1.Annotation 注解版(只是测试建表) 2.XML版 的实现(只是测试建表) 3.附录(Annotation 注解版CRUD操作)[注解版有个问题:插入值时 ...
- Java进阶知识09 Hibernate一对多单向关联(Annotation+XML实现)
1.Annotation 注解版 1.1.在一的一方加Set 1.2.创建Customer类和Order类 package com.shore.model; import java.util.Hash ...
- 菜鸟学习Hibernate——一对多关系映射
Hibernate中的关系映射,最常见的关系映射之一就是一对多关系映射例如学生与班级的关系,一个班级对应多个学生.如图: Hibernate中如何来映射这两个的关系呢? 下面就为大家讲解一下: 1.创 ...
- 03.Hibernate一对多关联
前言:在域模型中,类与类之间最普遍的关系就是关联关系,在UML语言中关联关系是有方向的.在数据库中表与表之间也会有关联关系,本节介绍通过Hibernate映射一对多的关联关系,这是一种最普遍的关联关系 ...
随机推荐
- SpringBoot整合JPA遇到的问题
在学习SpringBoot中使用Repository时出现这种错误 或者使用findOne也会报错,只需要改为 应该是SpringBoot版本的原因,fingOne()方法好像已经不用了.
- node+express如何接收fromData
使用express-formidable来进行解析 安装 express-formidable npm install express-formidable 在app.js里放入已下代码 const ...
- SpringBoot中的classpath
一句话总结:classpath 等价于 main/java + main/resources + 第三方jar包的根目录.下面详细解释. 首先,classpath顾名思义,是编译之后项目的路径,而不是 ...
- 洛谷P6623——[省选联考 2020 A 卷] 树
传送门:QAQQAQ 题意:自己看 思路:正解应该是线段树/trie树合并? 但是本蒟蒻啥也不会,就用了树上二次差分 (思路来源于https://www.luogu.com.cn/blog/dengy ...
- PHP修改css文件中的背景图片并下载到本地
扒网站当中一般css中的图片扒不下来,这个脚本就是用来下载这些图片到本地的 流程 1.获取css文件路径 2.打开文件逐行读取判断是否包含需要的图片 2.1 包含则 -进行截取直接获取到相对路径 2. ...
- mac下docker安装php链接使用国产数据库驱动
docker下配置php macos系统无法使用神通数据库,所以使用docker来安装php 第一步先安装php docker search php docker pull php:7.1-fpm d ...
- Java实现酒店客房管理系统
这篇文章主要为大家详细介绍了Java实现酒店客房管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Java实现酒店客房管理系统的具体代码,供大家参考,具体内容如下 Log ...
- Linux AWK工作原理
本篇文章我们主要为大家介绍 AWK 是如何工作的. AWK 工作流程可分为三个部分:1.读输入文件之前执行的代码段(由BEGIN关键字标识).2.主循环执行输入文件的代码段.3. 读输入文件之后的代码 ...
- 内网渗透 day8-linux提权和后门植入
linux提权和后门植入 目录 1. 脏牛漏洞复现 3 (1) 去网上把代码复制然后touch一个.c文件,vi或者vim打开将代码复制进去保存 3 (2) 进入shell然后从kali开的apach ...
- JS多物体运动案例:变宽、变高
任务描述: 当鼠标移入"变宽"矩形时,该矩形宽度逐渐增加至400px,移出该矩形,宽度逐渐恢复至初始值;当鼠标移入"变高"矩形时,该矩形高度逐渐增加至400px ...