hibernate 一对多 关系映射
发表于:2024-09-25 作者:千家信息网编辑
千家信息网最后更新 2024年09月25日,在关系中,或多或少的表之间有复杂的关联关系这里测试 一对多 关联关系的配置开发步骤就不多说了。直接看一个示例。users 用户 和 shop商品订单表分析:一个用户可以有多个商品订单,一个订单只属于一
千家信息网最后更新 2024年09月25日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安全错误
数据库的锁怎样保障安全
网络安全概念滴滴
服务器鲁大师77万分什么水平
亿企搜网络技术有限公司
互联网理财科技
备份服务器管理办法
一样的手游为啥服务器不同
一卡通系统软件开发
网络安全领导小组必要性
数据库all方法
mysql数据库字符编码更改
无锡进口软件开发概念设计
选修课计算机网络安全
php服务器代运营
湖北公司软件开发
高级web软件开发
某科学cs服务器论坛
网络安全组成部分
阿里云服务器优势
软件开发应用多开
监利软件开发专业
软件开发的感触
ifix数据库io地址
文件服务器管理器
软件开发哪些环节最重要
交通银行软件开发自荐信
学校计算机机房服务器搭建
著名软件开发企业排名
戴尔服务器sd卡模块安装
奉贤区挑选网络技术服务价目表
软件开发计划书 doc