搜尋
首頁資料庫mysql教程Hibernate持久化对象的状态
Hibernate持久化对象的状态Jun 07, 2016 pm 04:09 PM
hibernate物件耐力狀態角度

1. 站在持久化的角度 , Hibernate 把对象分为 4 种状态 : 持久化状态 , 临时状态 , 游离状态(脱管状态) , 删除状态.Session 的特定方法能使对象从一个状态转换到另一个状态 . 2. 临时状态(Transient) : 1). 在使用代理主键的情况下 , OID 通常为 null 2

1. 站在持久化的角度 , Hibernate 把对象分为 4 种状态 : 持久化状态, 临时状态, 游离状态(脱管状态) , 删除状态.Session 的特定方法能使对象从一个状态转换到另一个状态 .
2. 临时状态(Transient) : 1). 在使用代理主键的情况下 , OID 通常为 null 2). 不处于 Session 的缓存中 3). 在数据库中没有对应的记录
3. 持久化状态(也叫”托管” )( Persist)
1). OID 不为 null 2). 位于 Session 缓存中 3). 若在数据库中已经有和其对应的记录 , 持久化对象和数据库中的相关记录对应 4). Session 在 flush 缓存时 , 会根据持久化对象的属性变化 , 来同步更新数据库 5). 在同一个 Session 实例的缓存中 , 数据库表中的每条记录只对应唯一的持久化对象( Session 缓存对象的 OID 不能重复)
@Test public void testOID(){ News news2 = (News ) session.get (News.class , 1); System.out.println (news2 ); News news = new News (); news.setAuthor ("Oracle2" ); news.setContent ("Oracle DB" ); news.setDate (new Date ()); news.setTitle ("DB" ); news.setId (1 ); //抛出异常: org.hibernate.NonUniqueObjectException session.update (news ); }
4. 游离状态(也叫”脱管” ) (Detached ): 1). OID 不为 null 2). 不再处于 Session 缓存中 3). 一般情况需下 , 游离对象是由持久化对象转变过来的 , 因此在数据库中可能还存在与它对应的记录
5. 删除状态(Removed) 1). 在数据库中没有和其 OID 对应的记录 2). 不再处于 Session 缓存中 3). 一般情况下 , 应用程序不该再使用被删除的对象
6. 状态的转换图 \ \
7. get & load 的区别: 共同点: get、load 从数据表中加载一个对象 , 加载后即为持久化状态的对象 不同点: get:喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPiDBory0sunRr8r9vt2x7S4gyPTDu9PQttTTprXEvMfCvCA8c3Ryb25nPiw8L3N0cm9uZz4gt7W72CBudWxsIKO7CgogICAgPHN0cm9uZz5sb2FkPC9zdHJvbmc+PHN0cm9uZz46PC9zdHJvbmc+INHTs9my6dGvyv2+3bHtIC4g1rG1vbXa0ru0zsq508O4w7bUz/PKsSA8c3Ryb25nPiw8L3N0cm9uZz4g1Nm9+NDQsunRr6OsCgogICAgz8i3tbvYtcTKx9K7uPa0+sDtttTP8yAuIMj0w7vT0LbU06a1xLzHwrwgPHN0cm9uZz4sPC9zdHJvbmc+sqLH0sq508PBy7jDttTP8yA8c3Ryb25nPiw8L3N0cm9uZz4g1PK74cXXs/ZvcmcuaGliZXJuYXRlLk9iamVjdE5vdEZvdW5kRXhjZXB0aW9uINLss6MKCjxicj4KCgo8YnI+CgoKOC4gdXBkYXRlILe9t6ijugoKPGJyPgoKCiAgICBAVGVzdAoKICAgIHB1YmxpYyB2b2lkIHRlc3RVcGRhdGU8c3Ryb25nPigpezwvc3Ryb25nPgoKICAgICAgICBOZXdzIG5ld3MgPHN0cm9uZz49PC9zdHJvbmc+IDxzdHJvbmc+KDwvc3Ryb25nPk5ld3MgPHN0cm9uZz4pPC9zdHJvbmc+IHNlc3Npb24uZ2V0IDxzdHJvbmc+KDwvc3Ryb25nPk5ld3MuY2xhc3MgPHN0cm9uZz4sPC9zdHJvbmc+IDE8c3Ryb25nPik7PC9zdHJvbmc+CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiA8c3Ryb25nPig8L3N0cm9uZz5uZXdzIDxzdHJvbmc+KTs8L3N0cm9uZz4KCiAgICAKCiAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0IDxzdHJvbmc+KCk7PC9zdHJvbmc+CgogICAgICAgIHNlc3Npb24uY2xlYXIgPHN0cm9uZz4oKTs8L3N0cm9uZz4KCiAgICAKCiAgICAgICAgc2Vzc2lvbiA8c3Ryb25nPj08L3N0cm9uZz4gc2Vzc2lvbkZhY3Rvcnkub3BlblNlc3Npb24gPHN0cm9uZz4oKTs8L3N0cm9uZz4KCiAgICAgICAgdHJhbnNhY3Rpb24gPHN0cm9uZz49PC9zdHJvbmc+IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbiA8c3Ryb25nPigpOzwvc3Ryb25nPgoKICAgIAoKICAgICAgICAgPHN0cm9uZz4vLzwvc3Ryb25nPrTLyrG21M/zzqrTzsDr17TMrAoKICAgICAgICBuZXdzLnNldEF1dGhvciA8c3Ryb25nPig8L3N0cm9uZz4mcXVvdDtPcmFjbGUmcXVvdDsgPHN0cm9uZz4pOzwvc3Ryb25nPgoKICAgIAoKICAgICAgICAgPHN0cm9uZz4vLzwvc3Ryb25nPnVwZGF0ZSC/ydLUyrnTzsDrttTP87Hkzqqz1r7Du6+21M/zIC4KCiAgICAgICAgIDxzdHJvbmc+Ly88L3N0cm9uZz7NqLOj0OjSqreiy83Su8z1IFVQREFURSDT777kCgogICAgICAgICA8c3Ryb25nPi8vPC9zdHJvbmc+yPS21M/zvLTOqrPWvsO7r7bUz/MgPHN0cm9uZz4sPC9zdHJvbmc+INTysrvQ6NKqtffTwyB1cGRhdGU8c3Ryb25nPigpPC9zdHJvbmc+ILe9t6gKCiAgICAgICAgc2Vzc2lvbi51cGRhdGUgPHN0cm9uZz4oPC9zdHJvbmc+bmV3cyA8c3Ryb25nPik7PC9zdHJvbmc+CgogICAgPHN0cm9uZz59PC9zdHJvbmc+Cgo8YnI+CgoK16LS4qO6Cgoxo6kgLiDKudPDs6G+sKO6IEJcUyDP7sS/1tC009Kzw+a0q7n9wLTSu7j2ttTP86Os0OjSqrbUxuS9+NDQuPzQwsqxo6y8tLX308MgdXBkYXRlo6ijqbe9t6gKCjKjqSAuIMj0yv2+3bHt1tDDu9PQttTP87bU06a1xLzHwryjrLu50qrWtNDQIHVwZGF0ZTxzdHJvbmc+KCk8L3N0cm9uZz4gt723qKOs1PK74cXXs/bS7LOjo7ogb3JnLmhpYmVybmF0ZS5TdGFsZU9iamVjdFN0YXRlRXhjZXB0aW9uCgo8YnI+CgoKOS4gc2F2ZU9yVXBkYXRlIDxzdHJvbmc+KCk6PC9zdHJvbmc+ILGjtOa78rj80MIKCjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/2014/1107/20141107092134167.png" alt="\">
11. delete ():删除一个对象对应的记录。 1). 若只想删除指定的对象,设置 ID 即可。 2). 若数据表中没有对应的记录,则抛出异常: java.lang.IllegalArgumentException
12. Hibernate 调用原生的 JDBC API:
session.doWork(new Work() { @Override public void execute(Connection connection ) throws SQLException { //使用 JDBC 原生的 API } });

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Vue中如何实现数据的缓存和持久化Vue中如何实现数据的缓存和持久化Oct 15, 2023 pm 01:06 PM

Vue中如何实现数据的缓存和持久化在Vue中,数据的缓存和持久化是一个常见的需求。缓存数据可以提高应用的性能,而持久化数据可以让用户在刷新页面或重新打开应用后依然能够看到之前保存的数据。下面将介绍如何通过一些常用的方法实现数据的缓存和持久化。使用Vuex实现数据缓存Vuex是Vue的官方状态管理库,它可以用来集中管理应用的所有组件的状态。我们可以利用Vuex

SpringBoot项目里怎么集成HibernateSpringBoot项目里怎么集成HibernateMay 18, 2023 am 09:49 AM

在SpringBoot项目中集成Hibernate前言Hibernate是一个流行的ORM(对象关系映射)框架,它可以将Java对象映射到数据库表,从而方便地进行持久化操作。在SpringBoot项目中,集成Hibernate可以帮助我们更轻松地进行数据库操作,本文将介绍如何在SpringBoot项目中集成Hibernate,并提供相应的示例。1.引入依赖在pom.xml文件中引入以下依赖:org.springframework.bootspring-boot-starter-data-jpam

Java错误:Hibernate错误,如何处理和避免Java错误:Hibernate错误,如何处理和避免Jun 25, 2023 am 09:09 AM

Java是一种面向对象编程语言,它被广泛地应用于软件开发领域。Hibernate是一种流行的Java持久化框架,它提供了一种简单且高效的方式来管理Java对象的持久化。然而,开发过程中经常会遇到Hibernate错误,这些错误可能会导致程序的异常终止或者不稳定。如何处理和避免Hibernate错误成为了Java开发者必须掌握的能力。本文将介绍一些常见的Hib

详解Javascript对象的5种循环遍历方法详解Javascript对象的5种循环遍历方法Aug 04, 2022 pm 05:28 PM

Javascript对象如何循环遍历?下面本篇文章给大家详细介绍5种JS对象遍历方法,并浅显对比一下这5种方法,希望对大家有所帮助!

hibernate和mybatis有哪些区别hibernate和mybatis有哪些区别Jan 03, 2024 pm 03:35 PM

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。详细介绍:1、实现方式,Hibernate是一个完整的对象/关系映射解决方案,将对象与数据库表进行映射,MyBatis则需要开发者手动编写SQL语句以及ResultMap;2、性能,Hibernate在开发速度上可能比MyBatis快,因为Hibernate简化了DAO层等等。

Java 缓存技术中的缓存持久化机制Java 缓存技术中的缓存持久化机制Jun 20, 2023 am 09:33 AM

随着互联网应用的不断发展,数据缓存技术在大规模应用中显得尤为重要。Java作为目前广泛应用的一种编程语言,也有着许多应对缓存技术的工具和技术。其中缓存持久化机制在Java中具有重要的应用价值,本文将详细阐述该技术。一、缓存技术的应用在Java应用中,数据缓存的作用非常重要。随着应用规模的不断扩大,对数据的处理能力和数据的存储能力都提出了更高的要求。缓存技术就

如何在Hibernate中执行批量插入更新操作?如何在Hibernate中执行批量插入更新操作?Aug 27, 2023 pm 11:17 PM

在本文中,我们将看到如何在Hibernate中执行批量插入/更新。每当我们执行一条sql语句时,我们都是通过对数据库进行网络调用来完成的。现在,如果我们必须向数据库表中插入10个条目,那么我们必须进行10次网络调用。相反,我们可以通过使用批处理来优化网络调用。批处理允许我们在单个网络调用中执行一组SQL语句。为了理解和实施这一点,让我们定义我们的实体−@EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)

Java Hibernate中一对多和多对多关系的映射方式是什么Java Hibernate中一对多和多对多关系的映射方式是什么May 27, 2023 pm 05:06 PM

Hibernate的一对多和多对多Hibernate是一个优秀的ORM框架,它简化了Java应用程序与关系型数据库之间的数据访问。在Hibernate中,我们可以使用一对多和多对多的关系来处理复杂的数据模型。Hibernate的一对多在Hibernate中,一对多关系是指一个实体类对应多个另一个实体类。比如,一个订单(Order)可以对应多个订单项(OrderItem),一个用户(User)可以对应多个订单(Order)。要在Hibernate中实现一对多关系,需要在实体类中定义一个集合属性来存

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具