`
studyworks
  • 浏览: 16701 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

hibernate persist() vs save()

    博客分类:
  • java
阅读更多
persist() is well defined. It makes a transient instance persistent. However, it doesn't guarantee that the identifier value will be assigned to the persistent instance immediately, the assignment might happen at flush time. The spec doesn't say that, which is the problem I have with persist().

persist() also guarantees that it will not execute an INSERT statement if it is called outside of transaction boundaries. This is useful in long-running conversations with an extended Session/persistence context.

A method like persist() is required.

save() does not guarantee the same, it returns an identifier, and if an INSERT has to be executed to get the identifier (e.g. "identity" generator, not "sequence"), this INSERT happens immediately, no matter if you are inside or outside of a transaction. This is not good in a long-running conversation with an extended Session/persistence context.
分享到:
评论

相关推荐

    Hibernate save persist merge探究

    《Hibernate的save、persist、merge深度解析》 在Java企业级开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本文将深入探讨Hibernate中的save、persist和merge这三个方法,帮助...

    Hibernate:有了 save,为什么还需要 persist?.docx

    `save` 和 `persist` 是Hibernate Session接口中的两个方法,它们都用于将瞬时对象(transient instance)转化为持久化对象(persistent instance)。然而,它们在行为上存在微妙的差别,这使得在某些场景下,`...

    java Hibernate save()与persist()区别

    在Java的持久化框架Hibernate中,`save()` 和 `persist()` 都是用来将瞬态(Transient)对象转化为持久化(Persistent)对象的方法,使得对象的状态能够被存储到数据库中。然而,两者之间存在一些关键的区别,这对于...

    hibernate aip hibernate aip

    9. **错误处理和日志记录**:理解Hibernate常见的错误和异常,如 detached entity passed to persist 等,并配置合适的日志系统,如Log4j或SLF4J,以便追踪应用运行状态。 总的来说,Hibernate AIP涵盖了从项目初始...

    hibernate第一个hibernate

    - 创建(Create):使用`Session.save()`或`Session.persist()`方法将对象持久化到数据库。 - 读取(Read):`Session.get()`或`Session.load()`用于根据主键获取对象,而`Query`或`Criteria`接口则支持更复杂的...

    Hibernate_级联关系说明_-_关于cascade和inverse的用法

    @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE}) private User user; ``` 在上面的例子中,我们设置了`inverse=true`,这意味着 `Address` 实体不再负责维护与 `User` ...

    Hibernate所需架包

    5. 使用Session进行CRUD操作,例如保存(save或persist)、更新(update)、删除(delete)和查询(query)。 了解和熟练使用这些架包是掌握Hibernate的关键。同时,开发者应根据实际项目需求选择合适的库,以保证...

    hibernate的各种保存方式的区别

    脱管状态的对象可以通过调用`save()`、`persist()`或者`saveOrUpdate()`方法重新变为持久化状态。 #### 二、save 和 update 区别 - **save** 方法主要用于将一个瞬态对象保存到数据库中。当调用此方法时,...

    hibernate_reference中文版和Hibernate中文手册

    5. CRUD操作:Hibernate提供了便捷的方法来完成创建(save()、persist())、读取(get()、load()、query())、更新(update()、merge())和删除(delete())对象的操作。其中,HQL(Hibernate Query Language)和...

    hibernate5--2.数据持久化及事务

    通过Session的save()或persist()方法,我们可以将瞬时对象转换为持久对象,确保其状态被持久化到数据库。 **持久化对象的生命周期:** - **瞬时态(Transient)**:对象刚刚创建,尚未与Session关联,此时对象状态...

    Hibernate级联操作一对多demo

    常见的级联类型有`SAVE_UPDATE`、`REMOVE`、`ALL`等。 - 例如,如果我们希望在删除父类实体时,也删除所有子类实体,可以这样设置:`cascade = CascadeType.REMOVE`。 3. **使用级联操作** - 当我们通过Hibernate...

    save, saveOrUpdate, persist, merge, update 区别.docx

    在Java的持久化框架Hibernate中,管理对象与数据库之间的交互是通过一系列的方法完成的,其中包括`save()`, `saveOrUpdate()`, `persist()`, `merge()`, 和 `update()`。这些方法各有其特点和适用场景,理解它们的...

    HibernateDemo(hibernate基本用法演示)

    - **创建(Create)**:使用 `Session` 的 `save()` 或 `persist()` 方法保存新实体到数据库。 - **读取(Read)**:通过 `get()` 或 `load()` 获取单个实体,`createQuery()` 或 `createSQLQuery()` 执行 HQL...

    Hibernate手册中文版

    - `save()`和`persist()`用于保存新对象,`update()`用于更新已存在的对象,`delete()`用于删除对象。 5. **Query与Criteria查询**: - HQL(Hibernate Query Language)是Hibernate的面向对象查询语言,类似于...

    Hibernate基础学习源码

    2. **Hibernate_02**: 在这个阶段,开发者可能学习了如何在Hibernate中使用Session接口进行数据操作,比如保存(save()或persist())、更新(update())、删除(delete())和加载(get()或load())对象。此外,还...

    jap+hibernate4实现

    entityManager.persist(user); } else { entityManager.merge(user); } } // ... } ``` 5. **使用Repository**:在业务逻辑层,你可以通过依赖注入的方式使用上述DAO,执行CRUD操作。 6. **事务管理**:对于...

    hibernate注册功能的实现

    7. 注册业务逻辑:在Action类的方法中,使用Hibernate的Session对象,调用`save()`或`persist()`方法将新用户对象持久化到数据库中。同时,记得设置`creationDate`为当前时间,可以使用`new Date()`来获取。 8. 视...

    Hibernate之API初识及增删改查实现案例hibernate003

    - **创建(Create)**:`Session.save()`或`Session.persist()`方法用于将对象保存到数据库,生成新的主键。 - **读取(Read)**:通过`Session.get()`、`Session.load()`或Criteria查询获取数据库中的对象。 - *...

    hibernate

    常见的`cascade`选项包括`SAVE_UPDATE`, `DELETE`, `MERGE`, `REFRESH`, `PERSIST`, 和 `ALL`。 #### Inverse 关联的拥有者 `inverse`属性用于指定哪一方负责维护关联关系。当设置`inverse=true`时,表示该实体...

    hibernate_core_API

    Session提供了增删改查(CRUD)方法,如save(), persist(), update(), delete()等,并支持事务管理和缓存机制。 3. **Query和Criteria**:这两者提供了查询数据库的能力。Query接口支持HQL(Hibernate Query ...

Global site tag (gtag.js) - Google Analytics