当前位置: 首页 > news >正文

ssh_ch06:hibernate外键对应设置

A. 多对一

a.1 新建Web project---many2one

image

a.2 添加hibernate支持

image

image

image

a.3 先进入DB Browser配置表中“一”的那一方。

image

image

image

image

a.4 配置“多”的那一方,其它的一样,最后一步:打倒数第二个勾。

image

a.5 建立一个测试类测试一下。

package com.yenange.dao;
import org.hibernate.Session;
import com.yenange.entity.JD;

public class JDDao {
public static void main(String[] args) {
Session session =util.HibernateSessionFactory.getSession();
JD jd=(JD)session.get(JD.class, 2);
System.out.println(jd.getJd());
System.out.println(jd.getTblQx().getQx());
}
}

至此,全部完成。

总结:其实很简单。1、把“一”按最普通的方式反转;2、把“多”按普通方式反转,最后一步倒数第二个勾上就好。


B. 一对多

b1. 新建项目

image

b2. 添加hibernate支持

image

添加过程与“一对多”相同,都是指定了一个util包,不再赘述。添加后的项目如下:

image

b3. 把“多”先按最普通的方式建好。

image

image

image

b4. “一”前面基本上是普通的,仅最后一步,最下面的勾打上就好了。

image

b5. 做一个测试类试一下.

package com.yenange.dao;
import java.util.Set;
import org.hibernate.Session;
import com.yenange.entity.JD;
import com.yenange.entity.QX;

public class Test {
public static void main(String[] args) {
Session session =util.HibernateSessionFactory.getSession();
QX qx=(QX)session.get(QX.class, 1);
System.out.println(qx.getQx());
Set<JD> set=qx.getTblJds();
System.out.println("总数:"+set.size());
for (JD jd : set) {
System.out.println(jd.getJd());
}
}
}

至此,全部完成。

总结:其实很简单。1、把“多”按最普通的方式反转;2、把“一”按普通方式反转,最后一步倒数第一个勾上就好。


C. 双向一对多

c1. 建立项目,添加hibernate支持

image

c2. 反转配置: 选中两个表

image

c3. 最后一步。最下面的两个勾要打上。两个表分别配一下,仅Class name不同而已。

image

c4. 复制一个BaseHibernateDAO类过来。项目情况:

image

新建一个区县的DAO

image

c5. 做一个测试类:

package com.yenange.dao;
import com.yenange.entity.JD;
import com.yenange.entity.QX;

public class QXDAO extends BaseHibernateDAO {
public static void main(String[] args) {
QX qx=new QX();
qx.setQx("海珠区");
QXDAO dao=new QXDAO();
dao.add(qx);
QX qx2=(QX)dao.get(QX.class, 22);
JD jd=new JD();
jd.setJd("新港西路");
jd.setTblQx(qx2);
dao.add(jd);
}
}

c6. 对于删除等可能涉及到外键的:

1、区县(“一”)的那一方的映射文件:

<set name="tblJds" inverse="true" cascade="all">

2. 测试文件添加代码:

dao.delete(QX.class, 22);//成功!!


D 多对多

d1. 创建项目

image

d2. 选中两张表, 进行反转

image

image

image

image

说实在的,感觉最后一个应该是Hibernate比代码生成器更强大的地方,可惜没有讲完。有空再研究吧!

相关文章:

  • [翻译]NUnit---String Collection File Directory Assert (七)
  • DataTable对象重组时,错误提示“该行已经属于另一个表”
  • hdu 2516博弈找规律
  • SQL查询:主从表 报表方式显示
  • Linux图形界面中客户端、服务器、窗口管理器之间的关系
  • paste命令
  • 一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...
  • Winform开发框架之混合型框架的剖析
  • 折腾13年——Leo张大志小传
  • 《C++.GUI.Programming.with.Qt.4》读书笔记Chapter 1~2
  • 学习 easyui 之二:jQuery 的 ready 函数和 easyloader 的加载回调函数
  • AS3应用程序模块化开发与ApplicationDomain
  • Access restriction: The type BASE64Encoder is not accessible due to restrict
  • 什么是x-window
  • Unity3D 关于yield在collider中的使用
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • Mocha测试初探
  • Python 基础起步 (十) 什么叫函数?
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • ViewService——一种保证客户端与服务端同步的方法
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 从伪并行的 Python 多线程说起
  • 回顾2016
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端之React实战:创建跨平台的项目架构
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用docker-compose进行多节点部署
  • 小程序测试方案初探
  • 用quicker-worker.js轻松跑一个大数据遍历
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​Python 3 新特性:类型注解
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #162 (Div. 2)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (27)4.8 习题课
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (一)kafka实战——kafka源码编译启动
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Framework .NET Core与 .NET 的区别
  • /proc/stat文件详解(翻译)
  • @AutoConfigurationPackage的使用
  • @拔赤:Web前端开发十日谈
  • [ IO.File ] FileSystemWatcher