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(&…

代码中特殊的注释技术——TODO、FIXME和XXX的用处(转)

1、声明 本篇转自博客&#xff1a;http://blog.csdn.net/reille/ 2、转载内容 2.1、前言 今天在阅读 Qt Creator 的源代码时&#xff0c;发现一些注释中有 FIXME 英文单词&#xff0c;用英文词典居然查不到其意义&#xff01;实际上&#xff0c;在阅读一些开源代码时&#xff0…

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 ~/.…

@ConfigurationProperties + @EnableConfigurationProperties

1、ConfigurationProperties 在类上通过ConfigurationProperties注解声明当前类为属性读取类。 举例&#xff1a; ConfigurationProperties(prefix "jdbc") prefix"jdbc" 读取属性文件中&#xff0c;前缀为jdbc的值。 在类上定义各个属性&#xff0c;名称…

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 …

Android 常见内存泄漏及解决方法

Android中的内存泄漏&#xff1a; 先说一下为什么会出现内存泄漏&#xff1a; Android程序开发中&#xff0c;如果一个对象已经不需要被使用了&#xff0c;本该被回收时&#xff0c;而这时另一个对象还在持有对该对象的引用&#xff0c;这样就会导致无法被GC回收&#xff0c;…

二、内聚

【内聚】 1.内聚的定义 一个模块内部元素彼此结合的紧密程度。其中关键字&#xff1a;模块、元素、结合 模块&#xff1a;大到子系统&#xff0c;小到一个函数&#xff0c;都可以看成一个模块 元素&#xff1a; 模块&#xff1a;包、命名空间等 包&#xff1a;类、接口、全局数…

前端学习(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;而我们调用添加商品…

Android Runnable与Handler和Thread的使用,Handler构造方法弱引用实现

PS&#xff1a;在使用Runnable时&#xff0c;可能会内存泄露。Runnable是一个匿名内部类&#xff0c;因此它对当前Activity有一个隐式引用。如果Activity在销毁之前&#xff0c;任务还未完成&#xff0c; 那么将导致Activity的内存资源无法回收&#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代码 …