首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该为一个不可变的hibernate实体使用什么cascadeType?

对于一个不可变的 Hibernate 实体,可以使用 CascadeType.NONE,它表示不需要级联操作。不可变实体是指其属性值在创建后不可更改的实体对象。使用不可变实体可以提高系统的可维护性和可测试性,并且在并发环境下更加安全。

CascadeType 是 Hibernate 中用于定义级联操作的枚举类型,它用于在关联实体的父实体执行某种操作(例如持久化、更新、删除)时,是否要级联执行关联实体的相同操作。常用的 CascadeType 包括:

  • CascadeType.ALL:所有操作都会级联执行。
  • CascadeType.PERSIST:只有持久化操作会级联执行。
  • CascadeType.MERGE:只有更新操作会级联执行。
  • CascadeType.REMOVE:只有删除操作会级联执行。
  • CascadeType.REFRESH:只有刷新操作会级联执行。
  • CascadeType.DETACH:只有脱管操作会级联执行。
  • CascadeType.NONE:不需要任何级联操作。

对于不可变实体,不涉及对实体的属性进行修改,所以不需要执行任何级联操作。因此,推荐使用 CascadeType.NONE。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库 TencentDB:https://cloud.tencent.com/product/tcdb
  • 腾讯云云服务器 CVM:https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储 COS:https://cloud.tencent.com/product/cos
  • 腾讯云人工智能 AI:https://cloud.tencent.com/product/ai
  • 腾讯云物联网 IOT:https://cloud.tencent.com/product/iot
  • 腾讯云视频服务 VOD:https://cloud.tencent.com/product/vod
  • 腾讯云区块链服务 BCOS:https://cloud.tencent.com/product/bcos

请注意,以上只是部分腾讯云产品,更多产品和服务请访问腾讯云官方网站进行了解。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Hibernate学习笔记 多表映射

前面说了Hibernate单表映射,由于是实体类和数据表之间一对一映射,所以比较简单。现在就来说说多表映射,这需要涉及到多个实体类和数据表之间关系。因此稍微复杂一点。...建立实体建立了两个实体类,一个作者类,一个文章类,其他方法都忽略了,就留下了注解。...这里是用来修改外键约束名称。其他使用方法需要查看官方文档。...这时候就需要一个头像表,这个表中每个头像和用户表中每个用户就是一一对关系。 一对一关系也存在单向和双向。首先我们看看单向映射。...另外需要注意是,使用多对多映射时,不能把级联属性指定为CascadeType.DELETE或者CascadeType.ALL,我们应该希望在删除一篇文章标签时,同时将该标签下所有文章都删除吧?

1.6K10

JPA实体类中注解

@Entity   标注于实体类上,通常和@Table是结合使用,代表是该类是实体类 @Table   标注于实体类上,表示该类映射到数据库中表,没有指定名称的话就表示与数据库中表名为该类简单类名表名相对应...,例如我们用hibernate实现就是有hibernate来控制   GenerationType总共有四个:   AUTO:   TABLE:由一个表来维护主键,这个表记录上一次生成主键,然后+1...默认加载为立即加载 *ToMany 默认加载方式为懒加载 @Entity @Entity标记在类名上面,作为实体标识 @Table 当实体类与其映射数据库表名不同名时需要使用 @Table...@OneToMany 描述一个一对多关联,该属性应该为集体类型,在数据库中并没有实际字段。 ...例如,实体Order有一个user属性来关联实体User,则Orderuser属性为一个外键,  其默认名称为实体User名称+下划线+实体User主键名称  @JoinTable(name =

3.9K70
  • 《Java从入门到放弃》框架入门篇:使用注解方式配置hibernate映射关系

    之前我们都是使用配置文件方式来生成代码,虽然和JDBC比较简单了很多,但每次都在修改时需要既改实体类又改映射文件。还是有点麻烦。...所以,这一篇,我们来说说使用注解方式来在接在实体类上配置映射关系。...第一步:新建一个项目,或者把之前项目中实体类、映射文件,还有hibernatemapping标签都删除,然后在DBBrowser中再次生成实体类。如下图: ?...红框中选项就表示直接在POJO上以注解方式加上映射关系。注意括号内hibernate版本,必须是3.2及以上才行。 生成后实体类(Author和Blog)代码就不复制上来了,内容太多。...@Cascade(value = {CascadeType.SAVE_UPDATE}),注意这儿CascadeType是org.hibernate.annotations.CascadeType

    62220

    Spring Data开发手册|Java持久化API(JPA)需要了解到什么程度呢?

    以前开发模式 JPA是什么 JPA解决了什么问题 JPA一个HelloWord程序 详解配置文件 常用注解 一对一问题 一对多问题 多对多问题 JPA中常见方法 JPA中对象状态 注意事项...还不进入正文,来了,安排上,一个一个来: 回顾以前开发模式 以前开发时候我们DAO层,要么使用Hibernate、要么使用iBatis、dbutils、toplink ?...JPA解决了什么问题 JPA统一了ORM框架访问数据库API JPA解决了ORM框架一家独大问题 JPA一个HelloWorld程序 导包 ? 编写配置文件 <?...表示是当前实体对应数据库中表名字 @Entity:表示是当前实体一个持久化实体 @Id:这个表示当前属性是一个主键 @GeneratedValue:主键生成策略 strategy=GenerationType.IDENTITY...@Lob:修饰String类型时候 表示大文本 修饰byte[]时候表示存储是二进制 一对一问题 需求:一个人对应了一个身份证、一个身份证也唯一对一个人 身份证-----

    1.3K30

    Hibernate框架学习之四(JPA操作)

    实体类添加适当注释可以在程序运行时告诉Hibernate如何将一个实体类保存到数据库中以及如何将数据以对象形式从数据库中读取出来。   ...二、JPA环境搭建 2.1 主要配置文件   使用JPA可以省去配置每个实体.xml 文件,只需直接在实体类中用注解方式直接说明即可。...例如 , 实体 Order 有一个 user 属性来关联实体 User, 则 Order user 属性为一个外键 , 其默认名称为实体 User 名称 + 下划线 + 实体 User 主键名称...2.3.3 @OneToMany @OneToMany(fetch=FetchType,cascade=CascadeType)    @OneToMany 描述一个一对多关联 , 该属性应该为集体类型...CascadeType)   @OneToOne 描述一个一对一关联 。

    6.7K70

    JPA多表复杂查询:详细篇

    将举几个栗子,来详细说一下自己在使用jpa多表复杂查询场景和想法。 栗子1: 以一个实体类User中几个属性进行筛选。...由于这个是user表 所以userRepository 继承JpaSpecificationExecutor接口,随后创建了一个封装条件类 public class PageParam {..., CascadeType.MERGE, CascadeType.REFRESH }, fetch = FetchType.LAZY) @org.hibernate.annotations.ForeignKey...,但是这里泛型 是直接给到了想要查询结果泛型,接下来 因为这里涉及到了一个 多表查询 所以上面的单表查询例子 已经不适合这个查询了,但是Criteria join方法 给我们提供了一个模式...hibernate复杂查询 不逊于mybatis ,尤其是对sql 语句不是很精通码农,虽然hibernate门槛较高可jpa 恰恰降低了hibernate 所需要门槛,希望大家可以通过经验

    4.4K101

    《Java从入门到放弃》框架入门篇:使用注解方式配置hibernate映射关系

    之前我们都是使用配置文件方式来生成代码,虽然和JDBC比较简单了很多,但每次都在修改时需要既改实体类又改映射文件。还是有点麻烦。...所以,这一篇,我们来说说使用注解方式来在接在实体类上配置映射关系。...第一步:新建一个项目,或者把之前项目中实体类、映射文件,还有hibernatemapping标签都删除,然后在DBBrowser中再次生成实体类。如下图: ?...红框中选项就表示直接在POJO上以注解方式加上映射关系。注意括号内hibernate版本,必须是3.2及以上才行。 生成后实体类(Author和Blog)代码就不复制上来了,内容太多。...主要说明一下映射关系注解。 cascade属性值对应有javax.persistence.CascadeType几个选项。 PERSIST:添加时级联。 MERGE:更新时级联。

    74270

    如何在 Spring Boot 中 读写数据

    CascadeType.MERGE | 级联合并;修改了子实体,保存父实体时也会同时保存子实体(常用)。 CascadeType.REMOVE | 级联删除;删除父实体时,会级联删除关联实体。...CascadeType.REFRESH | 级联刷新;获取父实体同时也会重新获取最新实体。...CascadeType.ALL | 以上四种策略 无 | 默认值 因为这四种注解只能表示实体之间几对几关系,指定与所操作实体相关联数据库表中列字段,就需要用到 @JoinColumn 注解。...@OneToOne @JoinColumn(name = "pwd_id") private Password pwd; 也可以不使用 @JoinColumn,Hibernate 会自动在用户表生成关联字段...private List user; 如果指定@JoinColumn 注解,Hibernate会自动生成一张中间表来对用户和部门进行绑定,这张中间表默认命名规则为:实体类表名_实体类中指定属性名

    15.9K10

    「拥抱开源」从表设计到 JPA 实现

    今天拿起键盘就是猛敲代码。 果然,十分钟后各种 JPA 报错开始了。跟新手党一样,看到一个错误就解决一个,没有好好思考为什么会出现这样错误。...于是乎,遇到一个解决一个,解决一个又遇到一个,经过数十个报错来回起伏。 敏锐发现苗头有些不对。全靠脑细胞记忆,以及开始对第一个错误解决过程开始模糊不清了。...B 每个实体至多与 A 一个实体有关系。 满足以上两点,即 A 与 B 关系是一对一。 一对多 1:N A 每个实体至少与 B N(N>0)个实体有关系。...B 每个实体至多与 A 一个实体有关系。 满足以上两点,即 A 与 B 关系是一对多,B 与 A 关系是多对一。 多对多 M:N A 每个实体至少与 B M(M>0)个实体有关系。...(如上图所示) 导购员、商品数据是基础数据表,即主动关联其他实体集。 商品主数据,包含两种关联关系。 与导购员之间关系是多对一。即 @ManyToOne,注意这里只需要级联刷新操作即可。

    1.6K20

    史上最简单JPA关联教程

    我们这边接着上一节课程继续介绍,这边新建了Goods,GoodsDetail,Classify,Address四个实体映射类。分别进行一对一,一对多,多对多关联介绍。....html 这边介绍方法是:在控制一方添加:@JsonIgnore 注解,然后在实体类上面添加@JsonIgnoreProperties({"hibernateLazyInitializer",...2.接下来就是介绍双向一对多关联查询了,这边用用户实体类(user)和地址实体类(address)来做具体介绍,注解分别为@OneToMany和@ManyToOne(一对多和多对一) 用户实体类:...,采用方法也是通过JsonIgnore来解决。...3.接下来最后多对多查询,这边用商品实体类(goods)和商品分类实体类(classify)给大家做细致介绍。

    1.8K60

    hibernate关联与级联

    大家好,又见面了,是你们朋友全栈君。 什么是关联(association) 1、关联指的是类之间引用关系。如果类A与类B关联,那么被引用类B将被定义为类A属性。...2、关联分类:关联可以分为一对一、一对多/多对一、多对多关联 关联是有方向 关联关键点都在外键上 如何建立一对多双向关联 以订单和订单项做案例 一个订单对多个订单项,多个订单项对一个订单 在订单实体类中需要添加两个属性...: Set orderItems initOrderItems = 0;//0代表懒加载 1代表立即加载 在订单项实体类中需要添加一个属性:Order order 定义一对多关系时需要采用接口方式...@Entity //该类被hibernate当做实体给管理 @Table(name="xx_plat_role") //对应数据库表 public class Role { @Id...,中间表user_role(userId,roleId),user是主控方,role是从方, 在spring+hibernate环境下,使用是Annotation配置 User.java @ManyToMany

    1.3K10

    Spring Data JPA 就是这么简单

    create-drop :慎用,当项目关闭,数据库中表会被删掉。 validate :验证数据库和实体属性是否匹配,匹配将会报错。 综上:个人感觉还是使用 update 较为稳妥。...@Transient 是一个属性注解,该注解标注字段不会被射到数据库当中。...以上使用注解是定义一个实体常用注解,通过上述注解我们就可以通过实体类生成数据库中表,实体类和表建立一个对应关系,下面贴出一个实体定义 demo : package com.zempty.springbootjpa.entity...现在先给出结论:该注解使用场景是几个实体属性大致相同,没有什么区别,唯一区别的可能也就是类名了,这样的话我们可以考虑使用该注解,使用该注解的话我们多个实体类公用一个table ,该表由父类生成,父类中默认会生成一个...(specification); } 这里演示了一个很简单查询demo,希望可以帮助你打开使用 Specification 大门。

    6.9K50

    走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

    什么使用Hibernate?既然Hibernate是关于Java对象和关系数据库之间联系的话,也就是我们MVC中数据持久层->在编写程序中DAO层......我们来使用一下update()方法吧....既然是更新操作了,那么肯定需要设置主键设置主键,数据库怎么知道你要更新什么。...Hibernate注解开发 在Hibernate中我们一般都会使用注解,这样可以帮助我们大大简化hbm映射文件配置。下面就来为大家详细介绍。...如何设定类属性不在表中映射?这两个问题我们一起解决。废话不多说,直接上例子。在cn.itheima.domain包下再编写一个Person实体类,同样使用注解配置。...扩展 Hibernate注解@Cascade中DELETE_ORPHAN已经过时了,如下: 可使用下面方案来替换过时方案: Hibernate关联映射——多对多 以学生与老师为例开始表演,使用注解完成这种多对多配置

    1.8K10

    走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

    -- more --> 前言 本博文主要讲解介绍Hibernate框架,ORM概念和Hibernate入门,相信你们看了就会使用Hibernate了! 什么Hibernate框架?...为什么使用Hibernate? 既然Hibernate是关于Java对象和关系数据库之间联系的话,也就是我们MVC中数据持久层->在编写程序中DAO层......我们来使用一下update()方法吧....既然是更新操作了,那么肯定需要设置主键设置主键,数据库怎么知道你要更新什么。...Hibernate注解开发 在Hibernate中我们一般都会使用注解,这样可以帮助我们大大简化hbm映射文件配置。下面就来为大家详细介绍。...扩展 Hibernate注解@Cascade中DELETE_ORPHAN已经过时了,如下: 可使用下面方案来替换过时方案: Hibernate关联映射——多对多 以学生与老师为例开始表演,使用注解完成这种多对多配置

    1.8K00

    SpringData JPA就是这么简单

    当时还是第一次见,觉得也没什么大不了,就是封装了HibernateAPI而已。 然后在慕课网上又看到了SpringData教程了。于是就进去学习了一番。...1.1SpringDataJPA入门 SpringData JPA只是SpringData中一个子模块 JPA是一套标准接口,而Hibernate是JPA实现 SpringData JPA 底层默认实现是使用...Hibernate SpringDataJPA 首个接口就是Repository,它是一个标记接口。...如果是简单操作的话,直接定义这么一个方法,就能够使用了。确确实实很好。 简直比Mytais不知道好到哪里去了。Mybatis还要去写映射文件,专门写一个sql语句。...2,**如果设置name,默认name = 关联表名称+”-“+关联表主键字段名,在上面实例3,中,默认为“address_id” ** 默认情况下,关联实体主键一般是用来做外键,但如果此时不想用主键作为外键

    1.6K80
    领券