Save()和persist()
这两种方法都用于在数据库中保存对象。
根据文档-
Save()-坚持给定的瞬时实例,首先分配一个生成的标识符。(或者,如果使用分配的生成器,则使用标识符属性的当前值。)如果关联是用cascade =“ save-update”映射的,则此操作将级联到关联的实例。
根据文档-
persist()-使瞬态实例持久化。如果关联是用cascade =“ persist”映射的,则此操作将级联到关联的实例。该方法的语义由JSR-220定义。
序号 |
键 |
救() |
坚持() |
---|---|---|---|
1 |
基本的 |
它将对象存储在数据库中 |
它还将对象存储在数据库中 |
2 |
返回类型 |
它返回生成的ID,并且返回类型可序列化 |
它不返回任何东西。它的void返回类型。 |
3 |
事务边界 |
它可以将对象保存在边界内和边界外 |
它只能在事务边界内保存对象 |
4。 |
分离物体 |
它将在表中为分离对象创建新行 |
它将为分离对象抛出持久性异常 |
5, |
支持者 |
只有Hibernate支持 |
JPA也支持它 |
@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(); } }
@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,而不必更改任何源代码。