hibernate 一对多 关系映射
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,在关系中,或多或少的表之间有复杂的关联关系这里测试 一对多 关联关系的配置开发步骤就不多说了。直接看一个示例。users 用户 和 shop商品订单表分析:一个用户可以有多个商品订单,一个订单只属于一
千家信息网最后更新 2025年01月20日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 Setshop = 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安全错误
数据库的锁怎样保障安全
拉普拉斯网络技术
学院网站数据库
数据库比较流行语言
松江区质量软件开发管理方法
付临门POS机服务器地址
东阳敏捷软件开发
想从事软件开发工作
服务器里面打不开网站
数据库开发人员技能要求
稻田绘画软件开发
笔记本怎么做服务器的显示器
服务器高限制状态
oa管理软件开发平台
深圳必过网络技术公司
数据库信息返回不到页面上
青岛软件开发助理招聘
ajax跨服务器访问
linux qt 数据库
宣传网络安全主题名称
联想服务器管理口ip在哪看
kad服务器
全国计算机等级网络技术
抖音修改名字服务器升级
linux服务器默认网卡
日常使用网络安全准则有什么
用io读取指定长度数据库
如何搭建我的世界手游服务器网易
创建数据库链oracle
政务网络安全可靠
服务器数据丢失很久能恢复么