`

Hibernate中的Update()和saveOrUpdate()的区别,session的load()和get的区别

阅读更多


   saveOrUpdate()方法可以实现update()的功能,但是会多些步骤,具体如下:

  如果对象在该session种已经持久化,不进行操作;对象的标识符属性(identifier property)

在数据库中不存在或者是个暂时的值,调用save()方法保存它;如果session中的另一个对象

有相同的标识符抛出一个异常;以上皆不符合则调用update()更新之。

  session.load/get方法均可以根据指定的实体类和id从数据库读取记录,get方法返回null,

而load方法会抛出一个ObjectNotFoundException;load方法可返回实体的代理类实例,

  而get方法永远直接返回实体类;load方法可以充分利用内部缓存和二级缓存中的现有数据

而get方法则仅仅在内部缓存中进行数据查找,如果没有发现对应的数据,将越过二级缓存,

直接调用sql完成数据读取。
分享到:
评论

相关推荐

    hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)

    可以使用`get()`或`load()`方法获取单个对象,`query()`或`createCriteria()`方法创建查询,并通过执行查询获取结果集。例如,使用HQL(Hibernate Query Language)查询: ```java Query<MyEntity> query = session...

    重写hibernate的session简单增删改查

    在Hibernate中,增加数据通常通过调用Session的save()或saveOrUpdate()方法来实现。save()用于新对象的保存,如果对象已经有了ID,那么它将被更新。saveOrUpdate()会根据对象是否存在数据库中决定是插入还是更新。 ...

    Hibernate(session管理)

    例如,save()或saveOrUpdate()用于保存对象到数据库,update()用于更新对象,delete()用于删除对象,而load()或get()用于根据主键获取对象。 5. **查询语言**:Hibernate支持HQL(Hibernate Query Language)和...

    Hibernate的Session的javadoc

    通过Session的get()或load()方法获取的对象默认处于此状态。 - **游离状态(Detached)**:对象曾经是持久化的,但当前未与任何Session关联。对象在游离状态下可以被重新持久化。 2. **对象持久化操作**: - **...

    Hibernate中文Api最新参考文档

    例如,使用`save()`或`saveOrUpdate()`方法保存实体,`load()`或`get()`方法获取实体,`update()`或`merge()`更新实体,以及`delete()`方法删除实体。 事务处理是数据库操作的重要部分,Hibernate通过`Transaction`...

    Hibernate三种状态和Session常用的方法

    get() 和 load() 都是从数据库中获取对象的方法,但是它们之间有一个重要的差别:get() 方法每次执行都会执行查询语句,而 load() 方法则只有在对对象进行操作时才会执行查询语句。 在使用 get() 方法时,每次执行...

    hibernate中文API

    - 加载和检索:find()、get()、load()等方法用于根据主键获取对象。 6. **查询** - HQL(Hibernate Query Language):面向对象的查询语言,类似于SQL,但更贴近于Java对象。 - Criteria API:提供更加面向对象...

    hibernate第一个hibernate

    - 更新(Update):通过`Session.update()`或`Session.saveOrUpdate()`更新已存在的对象。 - 删除(Delete):调用`Session.delete()`移除数据库中的记录。 6. HQL(Hibernate Query Language): Hibernate提供...

    Hibernate持久化对象的生命周期

    Session的多种方法如`save()`, `load()`, `get()`, `find()`, `update()`, `saveOrUpdate()`, `lock()`等可以将对象转变为持久化状态。 3. **离线对象(Detached Objects)**: - 离线对象是曾经是持久化对象,但...

    Hibernate实战

    这涉及到使用Session的save()、saveOrUpdate()、load()、get()、update()、merge()和delete()方法。同时,还会讨论事务管理和并发控制,确保数据的一致性和完整性。 查询语言在Hibernate中主要有两种:HQL...

    Hibernate中的实体状态及转换

    **临时状态(Transient) -> 持久化状态(Persistent)**:通过调用Session的`get()`, `load()`, `find()`, `iterate()`等方法,可以直接将新创建的对象绑定到数据库中的记录,从而使其进入持久化状态。 **游离状态...

    Hibernate DOC 中文文档

    4. **检索(Load/Get)**:load()基于主键获取对象,get()也是根据主键但不抛出异常,如果对象不存在则返回null。 5. **查询(Query)**:使用HQL或Criteria API执行复杂的查询操作。 **七、级联操作** 在映射配置...

    hibernate中文参考文档

    - Load()和Get():加载对象,Load()根据主键直接获取,Get()可能返回缓存中的对象。 - Update()和Merge():更新对象状态。 - Delete():删除对象。 六、查询语言HQL HQL是Hibernate的查询语言,语法类似于SQL,但...

    hibernate3.6框架中文文档

    例如,使用save()或saveOrUpdate()方法插入数据,使用get()或load()方法加载数据,使用update()或merge()方法更新数据,使用delete()方法删除数据。 6. **HQL和Criteria查询**: Hibernate提供了自己的查询语言HQL,...

    Hibernate4.1.1中文PDF版

    例如,`save()`, `saveOrUpdate()`, `update()`, `delete()`分别对应于增、删、改操作,而`load()`和`get()`用于查询。 7. **HQL和Criteria查询**:HQL是Hibernate的SQL方言,允许开发者以面向对象的方式编写查询。...

    Hibernate中文帮助文档详解

    Hibernate内置了第一级缓存(Session缓存)和第二级缓存(SessionFactory缓存)。第一级缓存默认开启,每个Session有自己的缓存;第二级缓存可选,适用于跨Session共享数据的情况。 八、性能优化 1. 异步处理:利用...

    hibernate-3.2 源码

    在 Hibernate 3.2 版本中,这个框架已经相当成熟,提供了丰富的功能和性能优化。在这个源码包中,我们可以深入理解Hibernate的工作原理,学习如何构建自己的持久化层。 一、Hibernate架构概述 Hibernate的核心组件...

    hibernate的各种保存方式的区别以及hibernate对象的三种状态[定义].pdf

    通过Session的save()、get()或load()方法可以将对象设置为持久化状态。 - Detached(游离):持久化对象在Session关闭后,就会变为游离状态。这时,对象与Session断开,但其仍然包含数据库中的数据副本。更新游离...

    Hibernate 中文api文档下载.zip_API_Hibernate API _hibernate api

    Hibernate通过不同的方法管理对象的状态,如makeTransient()使对象变为瞬时态,saveOrUpdate()根据对象状态决定是保存还是更新,load()和get()分别用于按ID加载已持久化的对象。 总结,Hibernate中文API文档详尽地...

    附件Hibernate程序

    实体类的实例可以通过Hibernate的Session接口进行持久化操作,如保存(`save()`或`saveOrUpdate()`)、更新(`update()`)、删除(`delete()`)和查询(`get()`、`load()`或`query()`)。 `HibernateBegin_1`可能是...

Global site tag (gtag.js) - Google Analytics