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

Hibernate:如何持久子对象而不在hibernate中接触/更新父对象

Hibernate是一个开源的Java持久化框架,它提供了一种将Java对象映射到关系数据库中的方法。在Hibernate中,持久化子对象而不接触或更新父对象可以通过以下几种方式实现:

  1. 使用级联操作:Hibernate提供了级联操作的功能,可以在保存、更新或删除父对象时自动处理子对象的持久化。通过在父对象的映射文件中配置cascade属性,可以指定需要级联操作的关联关系。例如,配置cascade="all"表示在保存、更新或删除父对象时,同时保存、更新或删除关联的子对象。
  2. 使用独立的会话:在某些情况下,可以使用独立的Hibernate会话来处理子对象的持久化,而不涉及父对象。首先,需要获取一个新的Hibernate会话,然后使用该会话独立地保存、更新或删除子对象。这样可以避免对父对象的操作对子对象产生影响。
  3. 使用延迟加载:Hibernate支持延迟加载的特性,可以在需要时才加载关联的子对象。通过在父对象的映射文件中配置fetch属性为lazy,可以延迟加载关联的子对象。这样可以避免在加载父对象时立即加载所有关联的子对象。
  4. 使用托管对象:在某些情况下,可以将子对象从父对象中分离出来,使其成为独立的托管对象。这样可以在不接触或更新父对象的情况下,单独处理子对象的持久化。可以使用Hibernate的Session的evict方法将子对象从父对象中分离出来,然后使用Session的save、update或delete方法来处理子对象的持久化。

需要注意的是,以上方法适用于Hibernate框架中持久化子对象而不接触或更新父对象的场景。在实际应用中,根据具体的业务需求和数据模型设计,选择合适的方法来实现持久化子对象的需求。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云对象存储COS、腾讯云云服务器CVM。

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

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

相关·内容

hibernate对象的3种状态 瞬时态、持久态、脱管态

Hibernate对象有3种状态,分别为:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。...瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在Hibernate,可通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库...持久态 处于该状态的对象在数据库具有对应的记录,并拥有一个持久化标识。...如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库的对应数据已被删除,该对象不再与数据库的记录关联。       ...当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下

76820

Hiberante知识点梳理

如果是持久化了的对象调用saveOrUpdate()则会 更新数据库对象;如果是未持久化的对象使用此方法,则save到数据库。 7....查询不到抛异常 11. hibernate的三种状态之间如何转换 当对象由瞬时状态(Transient)一save()时,就变成了持久化状态; Session 一 Close()了,它的缓存也都关闭了...14. cascade,即对住对象更新怎么影响到对象; save-update: 级联保存(load以后如果子对象发生了更新,也会级联更新)....但它不会级联删除 delete: 级联删除, 但不具备级联保存和更新 all-delete-orphan: 在解除父子关系时,自动删除不属于对象对象, 也支持级联删除和级联保存更新. all: 级联删除..., 级联更新,但解除父子关系时不会自动删除对象. delete-orphan:删除所有和当前对象解除关联关系的对象 15. fetch 抓取策略,在配置文件的Set标签配置 join : 左外链接

1.4K00

hibernate的java对象有几种状态,其相互关系如何(区别和相互转换)

花了一些时间理解hibernate的java对象的几种状态,很容易就懂了,这里记录一下,分享给大家!! 在Hibernate对象有三种状态:临时状态、持久状态和游离状态。...这个对象所保存的数据域数据库没有任何关系,除非通过Session的save或者saveOrUpdate把临时对象于数据库关联,并把数据插入或者更新到数据库,这个对 象才转换为持久对象。...持久状态:持久对象的实例在数据库中有对应的记录,并拥有一个持久化表示ID。...对持久对象进行 delete操作后,数据库对应的记录被删除,那么持久对象与数据库记录不再存在对应关系,持久对象变成临时状态。持久对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。...游离状态:当Session进行了close,clear或者evict后,持久对象拥有持久化标示符与数据库对应记录一致的值,但是因为回话已经消失,对象不在持久化管理之内,所以处理游离状态(托管状态)游离状态的对象与临时状态对象是十分相似的

86230

Hibernate_day02总结

Hibernate_day02总结 今日内容 l Hibernate持久对象的状态 l Hibernate的一级缓存 l Hibernate操作持久对象的方法 l Hibernate 关联关系映射...(重点) 脱管态:有持久化标识OID.但对象没有被session管理. ***** 持久化类的持久态的对象可以自动更新数据库....只要 Session 实例没有结束生命周期, 存放在它缓存对象也不会结束生命周期 当session的save()方法持久化一个对象时,该对象被载入缓存,以后即使程序不再引用该对象,只要缓存不清空,...的内部结构(持久对象能自动更新数据库原理) @Test /** * 持久对象能够自动更新数据库(依赖了一级缓存的快照区) */ publicvoid demo2(){ Session session...孤儿删除:只能在一对多的情况下使用.认为一对多的一的一方是方.多的一方方. * 孤儿删除指的是删除的一方没有外键值得那些数据.

1.5K110

关于hibernate对象的三种状态分析

顾名思义,saveOrUpdate基本上就是合成了save和update,update只是update;引用hibernate reference的一段话来解释他们的使用场合和区别   通常下面的场景会使用...默认情况下,一个持久状态的对象的改动(包含set容器)是不需要update的,只要你更改了对象的值,等待hibernate flush就自动更新或保存到数据库了。...ID看是否有该记录,如果有接着到缓存中去找变成持久态的对象 ---- 在Hibernate对象有三种状态:临时状态、持久状态和游离状态。...游离状态:当Session进行了Close、Clear或者evict后,持久对象虽然拥有持久化标识符和与数据库对应记录一致的值,但是因为 会话已经消失,对象不在持久化管理之内,所以处于游离状态(也叫:...当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下

1.4K10

Hibernate学习笔记2

持久化类三种状态切换 3.Hibernate一级缓存 3.1. 示例---演示一级缓存的存在 3.2. 持久对象具有自动更新数据库能力 为什么持久对象具有自动更新数据库能力? 3.3....简单说:无OID 与数据库的信息无关联,不在session管理范围内。...持久对象具有自动更新数据库能力 ? 为什么持久对象具有自动更新数据库能力? ? 3.3....Hibernate常用API-Session补充 update udpate操作它主要是针对于脱管对象持久对象具有自动更新能力。...4.Hibernate关联映射-数据对象三种关系介绍 Hibernate框架基于ORM设计思想,它将关系型数据库的表与我们java的类进行映射,一个对象就对应着表的一条记录,的字段对应着类的属性

1.4K40

hibernate系列之二

持久对象能够自动更新数据库就是依赖的一级缓存(快照区)   脱管态(detached):当某个持久化状态的实例与session的关联被关闭时就变成了脱管态; 脱管态对象存在持久化标识OID并且在数据库的数据存在关联...update()、saveOrUpdate()等,脱管态的对象就会过渡到持久态; 明白这些持久对象的状态之后再仔细说明一下hibernate缓存,hibernate中有两种缓存状态;一级缓存、二级缓存...session 清理缓存是指按照缓存对象状态的变化同步更新数据库; 清空session是指将session关闭; 介绍一下一级缓存的内部结构:(块照区) hibernate向一级缓存中放入数据时,同时会复制一份数据放入到...hibernate快照,当使用commit()方法提交事务时,同时会清理session的一级缓存(更新数据库),这时会使用OID判断一级缓存对象和快照区 的对象是否一致,如果两个对象的属性发生变化...得到对象 com.itwx.hibernate.pojo.Customer@62679465 第二次获取对象:直接从缓存获取,不在执行SQL语句 com.itwx.hibernate.pojo.Customer

43830

hibernate二级缓存作用、配置

二级缓存适用场景: 1、对象数据频繁共享 2、数据变化频率底 二级缓存如何工作的: Hibernate的二级缓存同一级缓存一样,也是针对对象ID来进行缓存。...SessionFactory的内置缓存存放了映射元数据和预定义SQL语句,映射元数据是映射文件数据的副本,预定义SQL语句是在Hibernate初始化阶段根据映射元数据推导出来的。...一级缓存的管理: ● evit(Object obj)将指定的持久对象从一级缓存清除,释放对象所占用的内存资源,指定对象持久化状态变为脱管状态,从而成为游离对象....● clear()将一级缓存的所有持久对象清除,释放其占用的内存资源 ● contains(Object obj)判断指定的对象是否存在于一级缓存....二级缓存的管理: ● evict(Class arg0, Serializable arg1)将某个类的指定ID的持久对象从二级缓存清除,释放对象所占用的资源.

92920

Java面试题| 框架篇

对象时只获得对象的id 当使用到对象的其他属性时再去数据库查询其他的信息 9:Hibernate对象状态 Hibernate对象有三种状态:临时状态(Transient)、持久状态(Persistent...临时状态:刚刚使用new语句创建,还没有被持久化,不处于Session的缓存。处于临时状态的状态的Java对象被称为临时对象持久化状态:已经被持久化,加入到Session的缓存。...处于持久化状态的Java对象被称为持久对象。 游离状态/托管状态:已经被持久化,但不处于session的缓存。处于游离状态的Java对象被称为游离对象。...2.为了在关机和内存空间不够的状况下,保持程序的运行状态,需要将内存对象状态保存到持久化设备和从持久化设备恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息。...4:注意 spring和MVC是父子容器关系,spring是容器,MVC是容器.能访问对象,却不能访问容器对象.基于这点我们还可以深入一下,不用spring容器,只用mvc容器是可以的

1.1K30

快速学习-hibernate与JPA的概述

第2章 hibernate与JPA的概述[了解] 2.1 hibernate概述 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系...JPA通过JDK 5.0注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库。...JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,不是关系数据库的表,而且能够支持批量更新和修改...、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持查询。...高级特性 JPA 能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,不需要自行处理这些特性在关系数据库的持久化。

1.2K10

Hibernate save, saveOrUpdate, persist, merge, update 区别

因为hibernate更新之前会先select,查询该持久对象,发现该对象和数据库的一致,就不会做update操作。...Hibernate saveOrUpdate hibernate saveOrUpdate()方法会执行插入或者更新操作。如果该对象在数据库已经存在则更新,不存在则插入。...Hibernate Merge hibernate merge()方法被用于更新数据库的记录,然而merge()方法通过创建一个传递进来的实体对象副本并且将这个副本作为返回值返回。...saveOrUpdate()方法: hibernate saveOrUpdate()方法会执行插入或者更新操作。如果该对象在数据库已经存在则更新,不存在则插入。...merge()方法: hibernate merge()方法被用于更新数据库的记录,然而merge()方法通过创建一个传递进来的实体对象副本并且将这个副本作为返回值返回。

2.3K30

spring boot 中使用 jpa以及jpa介绍

JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库。 2.jpa具有什么优势?...JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,不是关系数据库的表,而且能够支持批量更新和修改...2.4高级特性 JPA 能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,不需要自行处理这些特性在关系数据库的持久化...: ddl-auto: update //自动更新 show-sql: true //日志显示sql语句 jpa.hibernate.ddl-auto是hibernate的配置属性...系统会根据关键字将命名解析成2个语句,第一个 By 是区分这两个子语句的关键词。这个 By 之前的语句是查询语句(指明返回要查询的对象),后面的部分是条件语句。

3.8K10

MyBatis与Hibernate区别

架构取代CMP,完成数据持久化的重任。...也就是说,相对于常见的 JDBC/SQL 持久层方案需要管理SQL 语句,Hibernate采用了更自然的面向对象的视角来持久化 Java 应用的数据。...抓取策略 Hibernate对实体关联对象的抓取有着良好的机制。对于每一个关联关系都可以详细地设置是否延迟加载,并且提供关联抓取、查询抓取、查询抓取、批量抓取四种模式。它是详细配置和处理的。...O/R映射,在性能和对象模型之间如何取得平衡,以及怎样用好Hibernate方面需要的经验和能力都很强才行。...SqlSession: 是应用程序与持久层之间执行交互操作的一个单线程对象,其主要作用是执行持久化操作。

9710

Hibernate与MyBatis详解「建议收藏」

开发社区 Hibernate 与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8。...也就是说,相对于常见的 JDBC/SQL 持久层方案需要管理 SQL 语句,Hibernate采用了更自然的面向对象的视角来持久化 Java 应用的数据。...抓取策略 Hibernate对实体关联对象的抓取有着良好的机制。对于每一个关联关系都可以详细地设置是否延迟加载,并且提供关联抓取、查询抓取、查询抓取、批量抓取四种模式。...MyBatis在这一方面,使用二级缓存时需要特别小心。如果不能完全确定数据更新操作的波及范围,避免Cache的盲目使用。否则,脏数据的出现会给系统的正常运行带来很大的隐患。...Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。

53410

Hibernate框架学习之二

,此时脱管态的对象就过渡到持久态;由于瞬时态和脱管态的对象不在 session 的管理范围,所以会在一段时间后被JVM回收。   ...4.持久对象能够自动更新数据库 持久对象有一个非常重要的特性:持久对象可以自动更新数据库,请看如下示例: @Test //测试持久对象有自动更新数据库的能力 public...之前我们介绍过 Hibernate持久对象能够自动更新数据库,其实就是依赖了一级缓存,那么级缓存为什么就可以去更新数据库了呢,其实是因为一级缓存的一块特殊的区域就是快照区。...此处只需了解 Hibernate如何使用 Query 接口进行数据查询的即可。   ...2.Criteria   Criteria是一个完全面向对象,可扩展的条件查询API,通过它完全不需要考虑数据库底层如何实现,以及SQL语句如何编写,它是 Hibernate框架的核心查询对象

80250

如何在 Spring Boot 读写数据

API),它是在 jdk 5提出的Java持久化规范。...它为开发人员提供了一种对象/关联映射工具,实现管理应用的关系数据,从而简化Java对象持久化工作。很多ORM框架都是实现了JPA的规范,比如:Hibernate、EclipseLink 等。...元数据用于描述对象和表之间的映射关系,框架会据此将实体对象持久化到数据库表。 JPA 的API:用来操作实体对象,执行CRUD操作。对于简单的 CRUD 操作,开发人员可以不用写代码。...JPQL查询语言:以面向对象的方式来查询数据。 1.3 Hibernate Hibernate 框架可以将应用的数据模型对象映射到关系数据库表的技术。...如何在 Spring Boot 读写数据 cascade 属性用于指定级联策略: 策略 | 说明 --- | --- CascadeType.PERSIST | 级联持久化;保存实体时,也会同时保存子实体

15.9K10

hibernate笔记加强版「建议收藏」

当一个持久对象通过第一个Session对象进行了save()操作,那么这个对象在第一个Session对象的状态就是持久化状态。对象在第二个Session对象的状态为暂时状态。...自己主动更新的相应的此条记录,不用手动进行update操作; 也间接性的说明了对象持久化状态,仅仅有在开启手动提交事务的情况下才会有此状态(也就是说仅仅有开起了手动提交事务,那么更新持久化状态的对象...就直接返回null,不会去数据库查询此对象了 */ transaction.commit(); } 27、 脱管状态 当事务提交后,那么此对象就属于脱管状态了,那么再改动此对象的值,就不会被更新到相应表的相应记录上面去了...27. refresh方法 此方法接收一个持久对象, 此方法将会到数据库又一次查询出传入的持久对象,并覆盖掉原有的持久对象。 以达到从数据库更新内存持久对象的目的。...hibernate会将此事务对象的sql语句缓存区的全部sql语句遍历出来并运行。 事务提交并不会移除session对象持久对象,但会更新对象的快照对象

90420
领券