hibernate 一对多 关系映射
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,在关系中,或多或少的表之间有复杂的关联关系这里测试 一对多 关联关系的配置开发步骤就不多说了。直接看一个示例。users 用户 和 shop商品订单表分析:一个用户可以有多个商品订单,一个订单只属于一
千家信息网最后更新 2025年11月07日hibernate 一对多 关系映射
在关系中,或多或少的表之间有复杂的关联关系
这里测试 一对多 关联关系的配置
开发步骤就不多说了。直接看一个示例。
users 用户 和 shop商品订单表
分析:一个用户可以有多个商品订单,一个订单只属于一个用户。
这样就构成了一对多的关联关系。
这里用的是oracle 数据库
users 和 shop 数据库表
create table users( id number(7) primary key, name nvarchar2(20), pass nvarchar2(20), address nvarchar2(50))create table shop( id number(7) primary key, price number(7), sh_name nvarchar2(50), us_id references users(id))
2.users 实体
package com.hib.entity;import java.util.HashSet;import java.util.Set;public class Users { private Integer id; private String name; private String pass; private String address; private Set shop = new HashSet(); 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 getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Set getShop() { return shop; } public void setShop(Set shop) { this.shop = shop; } public Users(Integer id, String name, String pass, String address) { super(); this.id = id; this.name = name; this.pass = pass; this.address = address; } public Users() { super(); } @Override public String toString() { return "Users [id=" + id + ", name=" + name + ", pass=" + pass + ", address=" + address + "]"; }} shop 实体
package com.hib.entity;public class Shop { private Integer id; private Integer price; private String sh_name; private Users users; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getSh_name() { return sh_name; } public void setSh_name(String sh_name) { this.sh_name = sh_name; } public Integer getPrice() { return price; } public void setPrice(Integer price) { this.price = price; } public Users getUsers() { return users; } public void setUsers(Users users) { this.users = users; } public Shop(Integer id, String sh_name, Integer price) { super(); this.id = id; this.sh_name = sh_name; this.price = price; } public Shop() { super(); } @Override public String toString() { return "Shop [id=" + id + ", sh_name=" + sh_name + ", price=" + price + "]"; } }3.shop.hbm.xml映射文件配置
4. 不要忘记注册。
oracle.jdbc.OracleDriver ssh ssh jdbc:oracle:thin:@127.0.0.1:1521:xe org.hibernate.dialect.Oracle10gDialect true true thread
5.测试 级联插入测试
@Test public void insert(){ Session session = HibUtil.getSession(); Transaction tx = session.beginTransaction(); Users users = new Users(null, "苦力强", "kuliqiang", "zg"); Shop shop = new Shop(null, "橙子", 2800); users.getShop().add(shop); shop.setUsers(users); session.save(users); tx.commit(); }记得要设置级联关系。
测试 查询
@Test public void query(){ Session session = HibUtil.getSession(); Transaction tx = session.beginTransaction(); Users users = (Users)session.get(Users.class, 1); for (Shop shop : users.getShop()) { System.out.println(shop); } System.out.println(users); tx.commit(); }更新和删除就不测试了,更新先查询出来,再修改值,然后更新就可以了。
删除直接查询出来,删除就可以了。
如果是单向的1对多 上面的可以修改为
users 实体不改变
shop 中的 users去掉
配置文件中 去掉下面这段配置
4. 配置文件中 inverse="true" 去掉,告诉主表,来维护从表
其他的还是一样操作。
测试
配置
实体
文件
用户
订单
关联
更新
查询
商品
数据
数据库
复杂
之间
单向
多个
橙子
步骤
示例
苦力
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
采购20万台服务器
计算机网络安全服务器未启动
国外数据库网站
win10 ftp服务器
校园网络安全情况汇报
浦东新区工程网络技术特点
湖南服务器机柜厂家直销云主机
计算机网络技术压力大吗
福建公安厅网络安全专家
龙魄网络技术有限公司
网络机顶盒做文件服务器
北京华谊软件开发
scum服务器怎么知道谁在线
做vr软件开发需要掌握什么
智能信息处理与网络技术
服务器隐私安全吗
济南计算软件开发工资待遇
信息网络技术专业就业
成为数据库管理员
全国默哀关闭游戏服务器
汉高数据库重启
教体局网络安全宣传周
上海云谷网络技术有限公司
软件开发网络技术培训
vue 本地调试服务器
打开win安全中心服务器
武软计算机网络技术专业怎么样
全国默哀关闭游戏服务器
软件开发技术评级
服务器挂了前端怎么处理