Java持久性API(JPA)第5讲——关系建立

银行授信调查实战指南:从框架到风险排查 在银行信贷业务中,风险识别始于信息收集。授信调查作为风险防控的核心环节,旨在消除银企之间的信息不对称。通过财务指标的勾稽验证、经营数据的交叉比对,以及担保措施的价值评估,调查人员能够还原企业真实的偿债能力。贷前调查的框架一般从行业环境、经营基本面与还款来源三个层次展开,逐步穿透至具体的合同、流水与抵押物。稳健的授信额度测算需以经营性现金流覆盖本息为上限,并结合抵押率与企业实际资金缺口综合判断。面对虚假贸易、民间借贷隐匿等潜在风险,实地走访与税务、水电等第三方数据成为重要的排查工具。本文系统梳理了授信调查的分 阅读详情
 
目标:建立实体类之间的关系来体现数据库中实体之间的关联关系。
主要内容:
n         创建数据库表
n         添加测试数据
n         生成实体类
n         关系分析
n         主键类
1、实例说明
本实例模拟简单学生成绩管理系统,为了使用说明一对一的关系,每个学生对一个一台电脑。涉及的实体有:学生、电脑、课程、成绩。具体信息参考《创建数据库表》部分。
涉及的关系如下:
n         每个电脑属于一个学生;
n         学生和课程之间是多对多的关系;
n         学生和成绩之间是一对多的关系;
n         课程和成绩之间是一对多的关系。
2、创建数据库表
数据库表的定义语句如下:
create table student
(
   s_id char(10) not null,
   s_name char(10) not null,
   s_birthday date,
   primary key(s_id)
);
create table computer
(
   c_id char(10) not null,
   s_id char(10),
   c_price float,
   primary key(s_id),
   foreign key(s_id) references student(s_id)
);
create table course
(
   c_id char(8) not null,
   c_name varchar(50) not null,
   primary key(c_id)
);
create table score
(
   s_id char(10) not null,
   c_id char(8) not null,
   grade float,
   primary key(s_id,C_id),
  foreign key(s_id) references student(s_id),
   foreign key(c_id) references course(c_id)
);
3、添加测试数据
    添加测试数据的SQL语句如下:
insert into student values
(
   '0511370101',
   '张小菲',
   '1987-03-04'
);
insert into student values
(
   '0511370104',
   '刘慧',
   '1988-11-04'
);
insert into student values
(
   '0511370102',
   '付方',
   '1988-9-9'
);
insert into student values
(
   '0511370103',
   '郭好',
   '1987-6-5'
);
 
 
insert into computer values
(
   'cp001',
   '0511370101',
   8500
);
insert into computer values
(
   'cp002',
   '0511370102',
   8600
);
insert into computer values
(
   'cp003',
   '0511370103',
   8400
);
insert into computer values
(
   'cp004',
   '0511370104',
   8700
);
 
 
insert into course values
(
   'JK0301',
   'Java Web开发'
);
 
insert into course values
(
   'JK0302',
   'Java EE'
);
 
insert into course values
(
   'JK0401',
  '.NET'
);
 
insert into course values
(
   'JK0402',
   'C#语言'
);
 
insert into score VALUES(
'0511370101','JK0301',70
);
insert into score VALUES(
'0511370101','JK0302',71
);
insert into score VALUES(
'0511370101','JK0401',72
);
insert into score VALUES(
'0511370101','JK0402',73
);
insert into score VALUES(
'0511370103','JK0301',90
);
insert into score VALUES(
'0511370103','JK0302',91
);
insert into score VALUES(
'0511370103','JK0401',92
);
insert into score VALUES(
'0511370103','JK0402',93
);
 
insert into score VALUES(
'0511370104','JK0301',80
);
insert into score VALUES(
'0511370104','JK0302',81
);
insert into score VALUES(
'0511370104','JK0401',82
);
insert into score VALUES(
'0511370104','JK0402',83
);
 
4、使用向导生成持久单元
    和第1讲中的过程相同。
5、使用向导生成实体类
    和第1讲中的过程相同。
6、关系分析
   1)一对一的关系
学生和电脑之间的关系是一对一的关系
在Student类中有如下表示关系的代码:
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "student")
    private Computer computer;
在Computer类中有如下表示关系的代码:
    @JoinColumn(name = "s_id", referencedColumnName = "s_id", insertable = false, updatable = false)
    @OneToOne
    private Student student;
     2)一对多的关系
学生和成绩之间是一对多的关系。
在Student类中有如下表示关系的代码:
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "student")
    private Collection<Score> scoreCollection;
3)多对一的关系
成绩和学生之间的关系是多对一的关系。
在成绩类中有如下表示关系的代码:
    @JoinColumn(name = "s_id", referencedColumnName = "s_id", insertable = false, updatable = false)
    @ManyToOne
    private Student student;
7、主键类
在成绩表中,学生学号和课程号组成联合主键。在创建实体类的时候需要一个主键类来标识这个实体。
主键类的代码如下:
/*
 * ScorePK.java
 *
 * Created on 2007年5月30日, 上午1:11
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
 
package jpa;
 
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
 
/**
 * Primary Key class ScorePK for entity class Score
 *
 * @author Administrator
 */
@Embeddable
public class ScorePK implements Serializable {
 
    @Column(name = "s_id", nullable = false)
    private String sId;
 
    @Column(name = "c_id", nullable = false)
    private String cId;
   
    /** Creates a new instance of ScorePK */
    public ScorePK() {
    }
 
    /**
     * Creates a new instance of ScorePK with the specified values.
     * @param cId the cId of the ScorePK
     * @param sId the sId of the ScorePK
     */
    public ScorePK(String cId, String sId) {
        this.cId = cId;
        this.sId = sId;
    }
 
    /**
     * Gets the sId of this ScorePK.
     * @return the sId
     */
    public String getSId() {
        return this.sId;
    }
 
    /**
     * Sets the sId of this ScorePK to the specified value.
     * @param sId the new sId
     */
    public void setSId(String sId) {
        this.sId = sId;
    }
 
    /**
     * Gets the cId of this ScorePK.
     * @return the cId
     */
    public String getCId() {
        return this.cId;
    }
 
    /**
     * Sets the cId of this ScorePK to the specified value.
     * @param cId the new cId
     */
    public void setCId(String cId) {
        this.cId = cId;
    }
 
    /**
     * Returns a hash code value for the object. This implementation computes
     * a hash code value based on the id fields in this object.
     * @return a hash code value for this object.
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (this.cId != null ? this.cId.hashCode() : 0);
        hash += (this.sId != null ? this.sId.hashCode() : 0);
        return hash;
    }
 
    /**
     * Determines whether another object is equal to this ScorePK. The result is
     * <code>true</code> if and only if the argument is not null and is a ScorePK object that
     * has the same id field values as this object.
     * @param object the reference object with which to compare
     * @return <code>true</code> if this object is the same as the argument;
     * <code>false</code> otherwise.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ScorePK)) {
            return false;
        }
        ScorePK other = (ScorePK)object;
        if (this.cId != other.cId && (this.cId == null || !this.cId.equals(other.cId)))
            return false;
        if (this.sId != other.sId && (this.sId == null || !this.sId.equals(other.sId)))
            return false;
        return true;
    }
 
    /**
     * Returns a string representation of the object. This implementation constructs
     * that representation based on the id fields.
     * @return a string representation of the object.
     */
    @Override
    public String toString() {
        return "jpa.ScorePK[cId=" + cId + ", sId=" + sId + "]";
    }
   
}
 
【OpenClaw企业级智能体实战】第32篇:政企版OpenClaw安全落地指南——奇安信55页报告深度拆解与实战 2026年Q2,OpenClaw(俗称“龙虾”)安全风险集中爆发,公安部、工信部等监管机构密集发声,23万公网暴露实例、155个高危漏洞让企业“养虾”安全压力骤增。奇安信发布的55页《政企版龙虾安全使用指南》,以“看得清、管得住、用得好”为核心,构建了“端-网-云”三层防护体系。本文深度拆解这份报告的九大安全面与三大趋势,全景扫描奇安信、腾讯、360等头部厂商安全方案,提炼企业最低安全基线与实操配置,通过金融机构虚拟案例演示落地全流程,提供从资产摸底、规范制定到工具部署的完整解决方案。 阅读详情

相关推荐

PAT|中国大学MOOC-浙江大学翁恺-C语言程序设计习题集(更新中)

##2-0. 整数四则运算 时间限制:400 ms 内存限制:65536 kB 代码长度限制:8000 B 判题程序:Standard 作者:乔林(清华大学) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例: 3 ...

小鱼波波波 6万+

Spring JPA多对多关系表两种生成方式

第一种关系表只有两列多对多主键。ManyToMany默认两边互相配置,JoinTable注解直接添加关联表名称。这种方式将默认生成关联表,只有两个实体表的主键两列。 第二种关系表除了两列多对多主键还包含其他属性。思路是将ManyToMany拆分成为两个OneToMany。首先显示创建关系对象,生成自增主键,并定义若干关系表的属性。然后两个实体表分别OneToMany关联到关系表。   ref...

weixin_42926060的博客 2121

保姆级教程:Windows下用GDC-Client下载TCGA数据,从环境变量配置到成功下载

本文提供Windows平台下使用GDC-Client下载TCGA数据的完整教程,从环境变量配置到成功下载。详细介绍了GDC-Client工具的安装、系统环境变量设置、配置文件优化以及数据下载实战技巧,帮助生物信息学研究者高效获取TCGA数据库中的癌症基因组数据。

weixin_42520025的博客 404

Spring Data Jpa 多表之间的关系和操作多表的步骤(一对多)

Spring Data Jpa 多表之间的关系和操作多表的步骤 表关系 一对一 一对多: 一的一方:主表 多的一方:从表 外键:需要再从表上新建一列作为外键,他的取值来源于主表的主键 多对多 中间表:中间表中最少应该由两个字段组成,这两个字段做为外键指向两张表的主键,又组成了联合主键 实体类中的关系 4. 包含关系:可以通过实体类中的包含关系描述表关系 5. 继承关系 分析步骤 6. 明确表关系 7. 确定表关系(描述 外键 | 中间表) 8. 编写实体类,再实体类中描述表关系(包含关系) 9. 配置

恶魔盒子 906

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

东城绝神 1369

3、★☛基于STM32的手机通过wifi控LED灯√♠★

3、基于STM32的手机通过wifi控LED灯 文章目录3、基于STM32的手机通过wifi控LED灯1、Introduce介绍1.1、课题背景及其意义1.2、 国内外的研究状况2、方案的设计2.1、控制方案的确定2.2、控制方式的选择2.2.1、 单片机芯片的选择方案一方案二方案三方案四2.2.2、无线遥控模块的选择方案一方案二方案三3、硬件电路的设计3.1、系统的功能分析及体系结构设计3.1.1、系统功能分析3.1.2、系统总体结构3.2、模块电路的设计3.2.1、 STM32单片机核心电路设计3.2.

行走的皮卡丘 2963

JPA表间关系(多对多,一对多,多对一)

**AccountEntity:用户 RoleEntity:角色 Permission: 权限 一个用户只能有一个角色,而一个角色可以属于多个用户, 一个角色拥有多个权限,一个权限也可以被多个角色拥有 ** OneToMany(此时的角色就为一对多),在多的一方中加入少的一方的Set集合。targetEntity 为关联的实体类。JoinColumn可减少中间表的生成,account_role_id为待会儿会在少的一方(AccountEntity)中生成的角色Id字段,referencedColumnNa

wflsyf的博客 1513

Arduino 系列:Arduino Due 系列 (基于 ATSAM3X8E)_(5).电源管理与电压调节

电源管理与电压调节是确保嵌入式系统稳定性和可靠性的关键环节。通过合理选择电源输入方式、使用高效的电压调节器、设计适当的滤波电路和实施动态电源管理,可以有效提高系统的性能和寿命。同时,使用电源调试工具和编写调试代码,可以帮助开发者及时发现和解决问题。希望本文档能为使用 Arduino Due 的开发者提供有用的信息和指导。

2401_87715305的博客 1310

java——类和对象基础

学生-成绩实体类(实现学生实体类与成绩实体类的关联访问) 1)创建成绩实体类:Score  1.1. 分别为Score实体类定义如下属性:   实验成绩:浮点类型。   项目成绩:浮点类型。 2)为Score类中的各属性分别创建getter和setter方法。 3)创建学生实体类:Student2。   3.1 分别为Student实体类定义如下属性:    学生姓名:字符类型。    学生...

linjiayina的博客 2713

SpringAI系列 - MCP篇(二) - MCP Server Boot Starter

此处需注意之前的。

罗小爬的技术宝书 1321

华为OD面试手撕真题 【合并相邻且相等的元素】多语言题解

华为OD面试高频手撕真题【合并相邻且相等的元素】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 549

Java持久性API(JPA)第1讲——简单实例

 目标:使用Java持久性API把数据库中的数据显示出来。基本过程包括:u       加载驱动程序u       创建数据库以及表u       在NetBeans中加载驱动程序u       在NetBeans中创建连接u       创建持久单元以及实体类u       创建访问持久单元的会话Beanu       创建Servlet客户端程序,访问会话B

李绪成的一亩三分地 4389

Qwen-Image(阿里通义千问)技术浅析(一)

Qwen-Image(阿里通义千问多模态模型)是阿里巴巴推出的视觉-语言多模态大模型,能够理解图像内容并完成复杂的跨模态任务。

m0_75253143的博客 681

百度百科:资金管理---现金为王

 从即日起,本人开始了一项雄心勃勃的计划,即在较短的周期内转载并学习一篇网络上关于资金管理的文章。 资金管理  资金管理 money management  在风险市场,通过限制单次投入资金的比例;来控制风险。  常见的资金管理策略:金字塔型资金管理。  等比例型资金管理。  “现金为王”一直以来都被视为企业资金管理的中心理念。企业现金流量管理水平往往是决定企业存亡的关

重剑无锋,大巧不工。。。 3343

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

初级会计(4)——货币资金

是指企业的生产经营资金在周转过程中处于货币形态的那部分资金货币资金包括三个部分。会计上的现金有和之分。,即企业金库中存放的现金,包括人们经常接触的纸币和硬币等。。企业持有的金融市场的各种基金、存款证以及其他类似的短期有价证券等项目不包括在现金之内。因为这些项目有时难以即时转化为现金,往往需要一定的时间间隔,或者因为一定条件的限制而不能作为现金来使用。

m0_65945293的博客 1757

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

大厂故事之百度(1/4)从北大资源楼到纳斯达克——百度的创业年代与PC时代的霸主之路

《百度的创业传奇:从北大资源楼到纳斯达克》摘要 2000年1月,李彦宏带领8人团队在中关村创立百度,立志打造中文搜索引擎。初创期艰难,百度最初仅为门户网站提供搜索技术支持。2001年互联网泡沫破裂后,李彦宏力排众议推出独立搜索网站,完成关键转型。2002年启动"闪电计划",15人技术团队经过270天封闭开发,使百度搜索质量超越谷歌。2005年8月5日,百度在纳斯达克上市,首日股价暴涨459%,创下当时美国股市5年来新股首日涨幅纪录。此后百度进入黄金发展期,推出贴吧、知道等产品,市场份额一

Smileyan's blog 1235

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

刀客独家 | 潘胜接管百度移动生态市场部

作为百度最重要的“现金奶牛”,MEG事业群承载搜索、信息流、小程序等核心业务,其市场团队在品牌升级、流量运营及商业化协同等方面面临更高要求,目前潘胜对外的title还有一个百度营销研究院副院长。作为百度AI战略落地的核心场景,移动生态不仅支撑着智能云、自动驾驶等创新业务的现金流,更通过内容生态与用户数据的深度协同,为文心大模型训练提供日均16.5亿次调用场景。同时,生态开放性持续增强,与华为、小米等厂商共建的“百看计划”及25亿激励资金的“智跃计划”,加速AI技术向开发者与合作伙伴输出。

TMTdoc的博客 1302

李彦宏、张一鸣内容江湖大厮杀!

点击“开发者技术前线”,选择“星标

开发者技术前线-DevolperFront 740

银行业务知识学习2(银行资本管理)

银行业务的核心,是风险和资金管理,它们也是稳定经济的关键因素。 一个稳健的银行必须有足够的资金抵御违约贷款和资产值递减,这里说的资金,暂时理解为就是最低资本(资金)和缓冲金。 银行资本 根据百度百科的解释,银行资本指的是商业银行自身拥有的或者能永久支配、使用的资金,是银行从事经营活动必须注入的资金。 根据银行监管的规定,银行必须以账面资本的形式持有至少8%的风险加权资产,会和负债一起记录在银行资产负债表中。 银行的现金储备是存放在中央银行,属于银行资产,不属于银行资本。 银行必须有足够的账面资本时,才能在资

程序员涂小哥的技术博客 1178

数量金融学(2):货币时间价值

初步认识货币时间价值。

qcyfred的博客 5519

银行头寸的理解

对银行头寸的一些理解 刚开始接触 头寸 这个概念,以为是个别银行对某些自己业务的称呼,慢慢的,发现所有的地方都有头寸这个东西,这个时候,就知道这个概念是个通用的具有某个固定意义的称呼。 特意先去查了一下百度百科是如何定义 头寸 的: 头寸(position)是一个金融术语,指的是个人或实体持有或拥有的特定商品、证券、货币等的数量。汉语将其翻译为“头寸”,源于旧社会作为货币的“袁大头”每十个摞起来为一寸 。 看完还是没懂,就请问了一些行业内的大佬。大佬用通俗的话来解释了: 银行每天有客户存钱、也有客户取

门加玉 7671

cfo是什么职位么职位(cfo是什么职位么职位是什么职位)

cfo是什么职位 cfo:首席财务官。 首席财务官——CFO(Chief Financial Officer)是企业治理结构发展到一个新阶段的必然产物。没有首席财务官的治理结构不是现代意义上完善的治理结构。 从这一层面上看,中国构造治理结构也应设立CFO之类的职位。当然,从本质上讲,CFO在现代治理结构中的真正含义,...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 1157

gxp计算机系统 定义,GXP(游戏内积分简称)_百度百科

GXP(游戏内积分简称)语音编辑锁定讨论上传视频本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!在游戏公会大型副本或BOSS开荒成功后,随着时间的推移,团队内固定成员对装备的需求开始减少,而团队成员的DKP主要来源来自开荒,在非开荒阶段,DKP的获取非常稀少。为了不让装备浪费,固定团队会在需要的时候将非固定团队成员组进队内,拿取副本内的装备,但正如前面所说,非开荒阶段DKP...

weixin_39713833的博客 1749

数据分析----BCG模型(波士顿矩阵分析)

  参考百度百科       波士顿矩阵(BCG Matrix) 又称市场增长率—相对市场份额矩阵、四象限分析法、产品系列结构管理法等,是一种规划企业产品组合的方法。问题的关键在于要解决如何使企业的产品品种及其结构适合市场需求的变化,只有这样企业的生产才有意义。         波士顿矩阵是由BCG提出的,这个模型主要用来协助企业进行业务组合或投资组合。在矩阵坐标轴是的两个变量分别是业务单元所...

机器学习、数据挖掘 3万+

ChatGPT 关闭 Plus 付费;首批因 AI 失业的人出现,某游戏公司裁掉半数原画师;Slint 1.0 发布|极客头条

「极客头条」—— 技术人员的新闻圈!

极客日报 2万+

比情商智商重要的是财商——财商!

本文首发于微信公众帐号: 一界码农(The_hard_the_luckier) 无需授权即可转载; 甚至无需保留以上版权声明……百度百科:财商:本意是“金融智商”,英文缩...

weixin_43392568的博客 373
上一篇: NetBeans中的几个快捷方式
下一篇: Java持久性API(JPA)第6讲——关系操作
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值