java - 使用 hibernate 时数据库中的 save() 和 commit() 之间的区别

标签 java hibernate

我在学习 Hibernate 框架时从一本书中看到了这个例子。

public class BasicMovieManager()
{
    private void persistMovie(Movie movie)
    {
        Session session=sessionFactory.getCurrentSession();
        session.beginTransaction();
        session.save(movie);
        session.getTransaction().commit();
    }
}

我能理解必须将 Movie 对象映射并写入数据库。我也明白提交步骤将写入数据库。但是这里save()的目的是什么?我提到的一些消息来源说 save() 持久化 数据。坚持不意味着写入永久存储吗?如果不是,那具体是什么意思?

最佳答案

我认为比较是错误的,你应该比较

CommitFlush

保存坚持

已编辑:

你应该知道this :

transient: never persistent, not associated with any Session.    
persistent: associated with a unique Session.
detached: previously persistent, not associated with any Session.
  1. Commit 会将数据保存到 DB,因此您不能再回滚,这与 Flush 不同。

  2. Save 将在写入对象之前生成并返回标识符,稍后在 FlushCommit 时将数据写入数据库。

    Persist 不会返回值,因为您只在缓存中将对象标记为脏,因此在刷新或提交时将保存它,这在事务中持久化多个对象时很有用.

关于java - 使用 hibernate 时数据库中的 save() 和 commit() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34311069/

相关文章:

java - Hibernate - 在运行时更改连接字符串

java - 如何访问 HQL 中的枚举属性?

java - 尝试使用 iText 生成可变页面 PDF 时出现异常

Java 绑定(bind)不匹配错误 - LinkedList

java - Drools 规则中的运算符优先级

java - 如何在Android Studio中自定义多个应用程序?

java - 如何将 java 对象的 id 同步到其关联的数据库行?

java - 简单的Sql查询到Hibernate查询

java - 使用JPA + Hibernate时如何注册自定义String UserType

java - 为什么我的 java 斜率方法得到负号?