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

 
、FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。

、FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。

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

Hibernate 补充 ManyToOne、OneToMany、OneToOne的使用例的更多相关文章

  1. Hibernate一对多OnetoMany

    ------------------------Hibernate一对多OnetoMany 要点: 配置在一端. 1.如果是单向关联,即只在一端配置OneToMany,多端不配置ManyToOne.则 ...

  2. hibernate中many-to-one关联时出现ObjectNotFoundException异常

    采用多对一关联,如果一的那端删除了,多的这端无法感知,虽然数据库中可以通过外键配置将多的一端置空,可是在hibernate里面我暂时不知道如何处理. 目前采用的方式: 1.首先,数据库中需要配置好外键 ...

  3. hibernate注解之@Onetomany、@Manytoone、@JoinColumn

    @Onetomany用于实体类与数据库表映射中少的一方,请看下面的例子. 假设一个用户只有一种角色,用户和角色是onetomany的关系 用户实体 @Entity @Table(name=" ...

  4. hibernate之实体@onetomany和@manytoone双向注解(转)

    下面是User类: @onetomany @Entity @Table(name="user") public class User implements Serializable ...

  5. Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [ManyToOne,OneToMany]

    1.项目结构: 1.1.场景说明: 一个订单,包含多个产品 1.2.类文件: Order.java package com.rhythmk.model; import java.util.Date; ...

  6. Hibernate ManyToOne, OneToMany的理解

    User to Group, Many to One的关系 Test Case 1: session.beginTransaction(); user.setGroup(group); session ...

  7. Hibernate的单向OneToMany、单向ManyToOne

    单向OneToMany 一个用户有多张照片,User----->Images是一对多关系,在数据库中Images维护一个外键useid 1.在映射关系的主控方Image这边,我们什么都不做.(为 ...

  8. hibernate注解@manytoone,@onetomany

    一.一对多(@onetomany) 1.单向一对多模型 假设通过一个客户实体可以获得多个地址信息.对于一对多的实体关系而言,表结构有两种设计策略,分别是外键关联和表关联. (1) 映射策略---外键关 ...

  9. Hibernate通过many-to-one元素的一对一映射

    在hibernate中我们可以通过两种方式来执行一对一映射: 通过many-to-one元素标签 通过one-to-one元素标签 在这里,我们将通过多对一的many-to-one元素进行一对一的映射 ...

随机推荐

  1. mac安装MySQL-Python报错

    报错内容主要是: EnvironmentError: mysql_config not found Command "python setup.py egg_info" faile ...

  2. C#通过用户名与密码访问共享目录

    C#通过用户名与密码访问共享目录 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  3. 让Elasticsearch集群冷热分离、读写分离【转】

    转自:https://blog.csdn.net/jiao_fuyou/article/details/50511255 根据Elasticsearch中文社区<ES冷热分离(读写分离) hot ...

  4. 并发框架Disruptor译文

    Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易.这个系统是建立在JVM平台上,其核心是一个业务逻辑 ...

  5. plsql的特殊复制

    转载自:https://jingyan.baidu.com/article/2fb0ba409c8c2100f2ec5f91.html PL/SQL中写好的SQL语句,如果要放到JAVA文件中,如果很 ...

  6. Java编程的逻辑 (95) - Java 8的日期和时间API

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  7. hdoj:2052

    #include <iostream> #include <string> using namespace std; int main() { int n, m; while ...

  8. Tensorflow学习资源

    https://tensorflow.google.cn/ 中文官网 https://www.w3cschool.cn/tensorflow_python/tensorflow_python-gnwm ...

  9. Redis介绍和安装

    一. Redis的介绍 Redis 是一个Key-Value存储的系统:它支持存储的value类型有string(字符串),list(列表),set(集合),zset(有序集合):为了保证效率:数据都 ...

  10. Golang 笔记 1 基础、基本数据类型

    一.Go语言基础 1. 基础 Go语言中的标识符必须以字母(Unicode字母,PHP/JS可以用中文作为变量名)下划线开头.大写字母跟小写字母是不同的:Hello和hello是两个不同的名字.  G ...