Hibernate 补充 ManyToOne、OneToMany、OneToOne的使用例

1、前言

Hibernate 为程序员提供一种级联操作,在编写程序时,通过 Hibernate 的级联功能可以很方便的操作数据库的主从表的数据,
我们最常用的级联是级联保存和级联删除。

2、ManyToOne | OneToMany 单词误导

当我们去试用的时候,首先要明确级联关系,是一对多,还是多对一,还是一对一,
明确了这一点还不够,还要清楚是谁一对多,谁多对一,这样才能更好地去应用上边的这两个注解:ManyToOne  OneToMany
记忆公式:第一个单词就是当前实体类,To 之后的是下方要对应的实体类。

 3、举例说明:一对多 、 多对一

高二3班的数学老师老师跟高二3班的学生
一对多:一个老师可以对应多个学生
多对一:多个学生只可对应一个老师
如果换成表、注解的话:
tearch老师实体,对应的级联操作注解就是:OneToMany
 @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="news") private Set<StudentBean> studentBean;

    student学生实体,对应的级联操作注解就是:ManyToOne

@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)  
@JoinColumn(name="news_id", insertable = false,updatable = false)  
private NewsEntity news;  

4、补充

4.1、mappedBy 属性 

mappedBy 指定关联实体的属性;它的值是属性值而非数据库中列名。

4.2、@JoinColumn 注解

可以使用 @JoinColumn 注解来替代 mappedBy 属性,但是 @JoinColumn 的 name 属性指定的是数据库中的列名。

4.3、fetch=FetchType.LAZY    |    EAGER  

参考地址:https://blog.csdn.net/u010082453/article/details/43339031
1、FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。2、FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。3、比方User类有两个属性,name跟address,就像百度知道,登录后用户名是需要显示出来的,此属性用到的几率极大,要马上到数据库查,用急加载;
而用户地址大多数情况下不需要显示出来,只有在查看用户资料是才需要显示,需要用了才查数据库,用懒加载就好了。所以,并不是一登录就把用户
的所有资料都加载到对象中,于是有了这两种加载模式。A、实体对象的延迟加载
如果想对实体对象使用延迟加载,必须要在实体的映射配置文件中进行相应的配置,如下所示:
<hibernate-mapping><class name=”com.neusoft.entity.User” table=”user” lazy=”true”>……</class>
</hibernate-mapping>一般是对整个实体对象进行设置是否是懒加载,而非单个属性。若该实体对象关联某个对象,如下面:关联的实体对象通常是懒加载

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动端使用页尾文字使用绝对定位遇到input框会飘起来的处理方案

如下版权信息的样式在遇到input框的时候会跟随输入框其后 优雅的解决方式&#xff1a;&#xff08;定位遇上键盘飘窗解决&#xff09; mounted里面写上&#xff1a;var originalHeightdocument.documentElement.clientHeight || document.body.clientHeight; //console.info(&…

Android 解决导入多个module时jar包冲突

1、在后导入的module中编译先前导入的module compile project(path: :faceplatform) 2、删除后导入的module里面的和先前导入的module的重复jar包&#xff0c; 同理jniLibs里面重复的so文件也需要删除 在线回复bug:qq1085220040

linux 添加环境变量(php为例)

find / -name php vim /etc/profile 文件最后添加 export PATH$PATH:/usr/local/php/bin source /etc/profile php -v 这时只实现了当前ssh 登录时可以PHP&#xff0c;如果退出重新登录就不能使用PHP了 解决&#xff1a; vim ~/.bashrc 添加 source /etc/profile source ~/.…

Android 活体人脸实时采集,百度、虹软

百度现在功能较少——使用虹软&#xff0c;方便 虹软官网&#xff1a;https://ai.arcsoft.com.cn/ucenter/resource/build/index.html 申请应用&#xff0c;下载SDK即可 虹软已修改好的&#xff0c;可注册人脸&#xff0c;人脸验证成功——登陆的demo&#xff1a;https://down…

Android 最新左右可见上下页的banner实现demo

运行效果&#xff0c;可见上下页样式 demo链接&#xff1a;https://download.csdn.net/download/meixi_android/11045703 实现方法 首先添加必要依赖 implementation (com.android.support:recyclerview-v7:27.0.2){force true } implementation (com.android.support:cardv…

WIN10下微信崩溃(已经是最新版)的解决方法

问题症状&#xff1a;WIN10下运行最新版微信&#xff08;CrashVersion1644560715&#xff09; ---------------------------微信运行错误---------------------------你的微信崩溃次数较多&#xff0c;建议使用最新版本&#xff0c;点击"确定"到官网(http://pc.weixi…

o.s.b.d.LoggingFailureAnalysisReporter

1、错误信息 *************************** APPLICATION FAILED TO START ***************************Description:Field userMapper in club.sscai.userservice.user.service.UserService required a bean of type club.sscai.userservice.user.mapper.UserMapper that could …

前端学习(2733):重读vue电商网站43之使用 lodash 中 cloneDeep(obj) 来实现深拷贝

lodash 官方文档传送门 Using npm Js $ npm i -g npm $ npm i --save lodash_.cloneDeep(value) 使用 项目中使用 cloneDeep 需求&#xff1a;由于 addForm 中商品所属的分类数组 goods_cat在商品分类模块需要使用 v-model 进行双向绑定数组形式&#xff0c;而我们调用添加商品…

Spring Data JPA框架

1、前言 扔一个 spring data jpa 的代码&#xff0c;可运行&#xff0c;后续补充博客内容。 环境&#xff1a;eclipse tomcat8 2、部分截图 3、源码 https://gitee.com/niceyoo/jpa-demo 4、sql 既然都是 spring data jpa &#xff0c;还要啥数据库呀&#xff0c;自己创建一个…

jdk1.7 String switch的实现

对于int的switch&#xff0c;jvm是用tableswitch和lookupswitch来实现的&#xff0c;jdk1.7 switch增加了对string的支持&#xff0c;那么底层是如何实现的呢&#xff1f;是否增加了新的指令或是否给某些指令增加了新的含义&#xff1f; 看这样一个程序&#xff1a; Java代码 …

Android 多线程实现异步执行demo,线程池使用demo

方法1&#xff1a; 1、常见Runnable对象设置同步代码run运行体 class AutoSaleTicket implements Runnable {private int ticket 20;public void run() {while (true) {// 循环是指线程不停的去卖票// 当操作的是共享数据时,用同步代码块进行包围起来,这样在执行时,只能有一…

Mvc5 控制器,视图简单说明

本系列会比Mvc4更详细。Mvc4记录或没记录的东西这里也会提到。 控制器 自动装配&#xff1a; 一般自动装配对于添加的时候比较好用 视图&#xff1a; 控制器返回的视图&#xff0c;其实就是一些静态的HTML。动态性不好&#xff0c;从控制器传递少量数据&#xff0c;最简单使用…

前端学习(2734):重读vue电商网站44之使用 echarts

echarts 官方文档传送门 根据官方文档示例&#xff0c;我们先展示测试数据。 Javascript <template><div><!-- 面包屑导航区域 --><el-breadcrumb separator"/"><el-breadcrumb-item :to"{ path: /home }">首页</el-bre…

No fallback instance of type class found for feign client user-service(转)

No fallback instance of type class found for feign client user-service&#xff08;转&#xff09; 1、错误日志 在 feign 开启熔断&#xff0c;配置 fallback 类&#xff0c;实现当前接口的实现类时&#xff0c;报错信息如下&#xff1a; Error starting ApplicationCont…

Redis在windows下安装过程

https://www.cnblogs.com/M-LittleBird/p/5902850.html 一、下载windows版本的Redis 去官网找了很久&#xff0c;发现原来在官网上可以下载的windows版本的&#xff0c;现在官网以及没有下载地址&#xff0c;只能在github上下载&#xff0c;官网只提供linux版本的下载 官网下载…