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映射一对多的关联关系,这是一种最普遍的关联关系 ...
随机推荐
- requestS模块发送请求的时候怎么传递参数
首先要确定接口的传递参数是什么类型的,如果接口是查询,使用get请求方法,传递参数的时候使用params, 如果接口需要的json型参数的话,使用json,如果是上传文件的话,通过files参数在传递 ...
- Charles使用part1——基本功能介绍
一. 安装与破解: 官网地址:https://www.charlesproxy.com/download/ 破解自行解决. 二. 启动与配置: 启动 Charles 后,第一次 Charles 会请求 ...
- python的各版本的不同
Python的版本主要分为 2.× . 3.× 两个系列. Python3计划每年发布一个新的子版本,一次只增加一两种新语法. 使用时当然选择越新的Python版本越好,版本越老的代码越难维护. 维护 ...
- 【故障公告】博客站点再次出现故障,最终回退 .NET 5.0 恢复正常
自从博客系统升级 .NET 5.0 之后遇到的诡异故障(一.二.三.四),今天它又出现了,就在前天刚刚故障之后, 就在昨天 .NET 5.0 正式版刚刚发布之后,出现了. 今天晚上我们在 19:30 ...
- binary hacks读数笔记(ld 链接讲解 一)
首先我们先看两段代码: a.c extern int shared; int main(){ int a=100; swap(&a,&shared); } b.c int shared ...
- Xpath定位元素-一个例子
前几天在群里面解决的问题,记录下来和大家分享 需要定位这个股份制企业 方法: # 首先需要单击下拉框弹出企业性质的下拉选项:然后用过Xpath定位元素 driver.find.element_by_c ...
- spring cloud gateway 启动报错,Failed to bind on [0.0.0.0:xxx] bind(..) failed: 权限不够
最近把操作系统迁移到了deepin,不得不说Linux中需要学习的还是有很多的,本地启动网关的时候就遇到一个坑,特此记录一下,报错信息. Caused by: reactor.netty.Channe ...
- 如何使用GitHub创建Maven私有仓库
[Github上创建仓库] 首先,在GitHub上创建自己的仓库(mvn-repo): [配置本地setting文件] 找到本地的maven settings文件,配置server: 有两种选择,可以 ...
- 【开源】.net微服务开发引擎Anno开源啦
1.Anno是什么? Anno是一个微服务框架引擎.入门简单.安全.稳定.高可用.全平台可监控.依赖第三方框架少.底层通讯RPC(Remote Procedure Call)采用稳定可靠经过无数成功项 ...
- a标签中的target
html中target四种选择_blank._parent._self._top,分别是什么意思? eg:<Cell title="Open link in new window&qu ...