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映射一对多的关联关系,这是一种最普遍的关联关系 ...
随机推荐
- 应用LORAWAN技术的好处是什么
LoRaWAN现在一种非常流行的LPWA通信标准,在ISM(工业.科学.医疗)频段使用未经许可的无线电频谱,频率约为900MHz到430MHz(世界各地的标准各不相同). 物联网连接环境除了智能家庭联 ...
- Redis还可以做哪些事?
在上一篇文章中,讲到了redis五大基本数据类型的使用场景,除了string,hash,list,set,zset之外,redis还提供了一些其他的数据结构(当然,严格意义上也不算数据结构),一起来看 ...
- kubernetes 基础知识
1. kubernetes 包含几个组件 Kubernetes是什么:针对容器编排的一种分布式架构,是自动化容器操作的开源平台. 服务发现.内建负载均衡.强大的故障发现和自我修复机制.服务滚动升级和在 ...
- 10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户
1.redsi的bitmap数据结构介绍 bitmap本质上是一个string类型,只是他操作的是string的某个位是0还是1. setbit和getbit 两条命令是对字符串的位操作.每个位只能是 ...
- 教你如何 分析 Android ANR 问题
ANR介绍 ANR 的全称是 Application No Responding,即应用程序无响应,具体是一些特定的 Message (Key Dispatch.Broadcast.Service) ...
- OGG投递进程报错无法open文件,无法正常投递
1.1现象 之前有个客户遇到一个问题,OGG同步数据链路,突然有一天网络出现问题,导致OGG投递进程无法正常投递,无法写入目标端的该文件. 猜测是由于网络丢包等原因导致文件损坏,无法正常open,re ...
- QQ彩贝热销时装
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 为什么layui表单不显示?
当你使用表单时,Layui会对select.checkbox.radio等原始元素隐藏,从而进行美化修饰处理.但这需要依赖于form组件,所以你必须加载 form,并且执行一个实例.值得注意的是:导航 ...
- 激情的来源 Imagine how much you love it !
激情来自哪里?我想可能我找到了,精髓就在那个标题! 想象你有多么爱它!你就会爱上他,想象你有多么喜欢某一个东西,你很有可能就喜欢上他,着手去了解他,接触他. 如果带着这种想象状态的激情,工作和学习会有 ...
- centos6 安装 terminator
yum install terminator 报错: No package terminator available. 解决: yum install epel-release 报错 Cannot r ...