当前位置: 首页 > 编程笔记 >

Hibernate中save()和persist()之间的区别

雍宇定
2023-03-14
本文向大家介绍Hibernate中save()和persist()之间的区别,包括了Hibernate中save()和persist()之间的区别的使用技巧和注意事项,需要的朋友参考一下

Save()和persist()这两种方法都用于在数据库中保存对象。 

根据文档-

Save()-坚持给定的瞬时实例,首先分配一个生成的标识符。(或者,如果使用分配的生成器,则使用标识符属性的当前值。)如果关联是用cascade =“ save-update”映射的,则此操作将级联到关联的实例。

根据文档-

persist()-使瞬态实例持久化。如果关联是用cascade =“ persist”映射的,则此操作将级联到关联的实例。该方法的语义由JSR-220定义。 

序号

救()
坚持()

1

基本的 

 它将对象存储在数据库中

它还将对象存储在数据库中

2

返回类型 

它返回生成的ID,并且返回类型可序列化 

它不返回任何东西。它的void返回类型。 

3

事务边界 

它可以将对象保存在边界内和边界外 

它只能在事务边界内保存对象 

4。

分离物体 

它将在表中为分离对象创建新行  

它将为分离对象抛出持久性异常 

5,

支持者 

只有Hibernate支持 

JPA也支持它

在Hibernate中保存的示例

@Entity
public class User {
   @Id
   Integer id;
   String name;
   public Integer getId() {
      return id;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.journaldev.hibernate.util.HibernateUtil;
public class SaveExample {
   public static void main(String[] args) {
      //获取会话工厂以开始事务
      SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
      Session session = sessionFactory.openSession();
      Transaction tx = session.beginTransaction();
      User user = new User();
      user.setId(1)
      user.setName("ABCD")
      session.save(user);
      //关闭资源
      tx.commit();
      sessionFactory.close();
   }
}

在Hibernate中坚持的例子

@Entity
public class User {
   @Id
   Integer id;
   String name;
   public Integer getId() {
      return id;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.journaldev.hibernate.util.HibernateUtil;
public class PersistExample {
   public static void main(String[] args) {
      //获取会话工厂以开始事务
      SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
      Session session = sessionFactory.openSession();
      Transaction tx = session.beginTransaction();
      User user = new User();
      user.setId(1)
      user.setName("ABCD")
      session.persist(user);
      //关闭资源
      tx.commit();
      sessionFactory.close();
   }
}
 类似资料:
  • 问题内容: 通过文档,我只能找到一个不同之处,即save方法生成将对象作为生成的标识符返回,但persist不是。这是提供persist方法的唯一目的。如果是的话,即使他不打算这样做对程序员也有帮助要使用生成的标识符,他可以使用save并忽略返回值。 也来通过这个线程有什么优势依然存在(中)与保存()在Hibernate中?。我可以从此线程获取的有意义的语句是 persist(),还可以保证,如果

  • 问题内容: Hibernate中的persist()和merge()有什么区别? 可以创建UPDATE&INSERT查询,例如: 在这种情况下,将生成 查询, 如下所示: 因此方法可以 生成 一个插入和一个更新。 现在: 这是我在数据库中看到的: 现在使用更新记录 这是我在数据库中看到的: 问题答案: JPA规范包含对这些操作的语义的非常精确的描述,比在javadoc中更好: 应用于实体X 的 p

  • 本文向大家介绍Spring Java中Save和SaveAndFlush之间的区别,包括了Spring Java中Save和SaveAndFlush之间的区别的使用技巧和注意事项,需要的朋友参考一下 Save和saveAndFlush均可用于保存实体。它们都属于Spring数据库。保存可能会或可能不会立即将您的更改写入数据库。当我们调用saveAndFlush时,系统将强制您的模型状态与数据库进行

  • 问题内容: 我试图通过测试一些CRUD操作来学习spring数据JPA 。 我碰到两个方法和。我看不出两者之间的区别。在调用时,我的更改也将保存到数据库中,所以的用途是什么。 问题答案: 在上,此命令中的更改将立即刷新到DB。有了,这未必是真实的,并且可能仅仅停留在内存中,直到或者发出命令。 但是请注意,即使你刷新了事务中的更改并且不提交它们,这些更改对于外部事务仍然是不可见的,直到对该事务中的提

  • 我试图通过测试一些CRUD操作来学习spring data JPA。 我遇到了两个方法和。我不明白这两者之间的区别。在调用时,我的更改也会保存到数据库中,所以有什么用。

  • 问题内容: 但没人回答我的下一个问题。经典的hibernate方法使用和JPA 实现之间有什么区别?我听说此JPA实现使用并像包装器一样工作,这是真的吗? 问题答案: 确实。 JPA只是一个API,允许您从使用的持久层中进行抽象。Hibernate提供了充当接口的实现,它使用与Hibernate 相同的基础方法。 这个想法是,例如,您可以将实现切换到Eclipse Link,而不必更改任何源代码。